Warum gibt PHPMailer eine PHP-Warnung über ein nicht übereinstimmendes Zertifikat in PHP 5.6 aus?

Linda Hamilton
Freigeben: 2024-10-26 23:09:31
Original
666 Leute haben es durchsucht

Why Does PHPMailer Emit a PHP Warning About a Mismatched Certificate in PHP 5.6?

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
Nach dem Login kopieren

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:

  1. Kontaktieren Sie den SMTP-Host: Fordern Sie den Host auf, sein SSL-Zertifikat zu aktualisieren, um über einen CN zu verfügen der mit dem Hostnamen übereinstimmt, zu dem Sie eine Verbindung herstellen. Dies ist die empfohlene und sichere Lösung.
  2. Konfigurieren Sie PHPMailer so, dass die Zertifikatsüberprüfung ignoriert wird: Sie können PHPMailer so konfigurieren, dass die Zertifikatskonflikte ignoriert werden, indem Sie die folgenden SMTP-Optionen festlegen:
$mail->SMTPOptions = array(
    'ssl' => array(
        'verify_peer'  => false,
        'verify_peer_name'  => false,
        'allow_self_signed' => true
    )
);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!