Heim >Backend-Entwicklung >PHP-Tutorial >Warum gibt PHPMailer eine PHP-Warnung über ein nicht übereinstimmendes Zertifikat in PHP 5.6 aus?
PHPMailer gibt PHP-Warnung aufgrund eines nicht übereinstimmenden Zertifikats aus
PHPMailer-Benutzer erhalten möglicherweise eine Warnung, wenn sie eine Verbindung zu SMTP-Hosts unter PHP 5.6 herstellen:
PHP Warning: stream_socket_enable_crypto(): Peer certificate did not match expected
Diese Warnung ist auf die erhöhte Sicherheit in PHP 5.6 zurückzuführen, das SSL-Zertifikate streng überprüft. Die Warnung weist darauf hin, dass das vom SMTP-Host vorgelegte Zertifikat nicht mit dem erwarteten Zertifikat für diesen Host übereinstimmt.
Ursache:
Die Nichtübereinstimmung tritt auf, wenn der SMTP-Host präsentiert ein Zertifikat, das keinen allgemeinen Namen (CN) hat, der mit dem erwarteten Hostnamen übereinstimmt. Wenn Sie beispielsweise eine Verbindung zu mx1.sub4.homie.mail.dreamhost.com herstellen und der Zertifikat-CN *.mail.dreamhost.com ist, löst PHP die Warnung aus.
Lösung:
Um dieses Problem zu beheben, gibt es zwei Ansätze:
$mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) );
Hinweis:Das Deaktivieren der Zertifikatsüberprüfung wird nicht empfohlen und sollte nur als vorübergehende Lösung verwendet werden.
Fazit:
Das PHP Die Warnung „stream_socket_enable_crypto(): Peer-Zertifikat stimmte nicht mit den Erwartungen überein“ kann behoben werden, indem entweder der SMTP-Host kontaktiert wird, um sein Zertifikat zu aktualisieren, oder indem PHPMailer so konfiguriert wird, dass die Zertifikatsüberprüfung ignoriert wird. Die empfohlene Lösung besteht darin, dass der SMTP-Host ein gültiges Zertifikat bereitstellt, das dem Hostnamen entspricht.
Das obige ist der detaillierte Inhalt vonWarum gibt PHPMailer eine PHP-Warnung über ein nicht übereinstimmendes Zertifikat in PHP 5.6 aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!