web-dev-qa-db-de.com

PHPMailer - SSL3_GET_SERVER_CERTIFICATE: Zertifikatprüfung fehlgeschlagen

Ist ein Problem aufgetreten, bei dem E-Mails von einem Mail-Server gesendet werden sollten, der über ein selbstsigniertes Zertifikat verfügt. Der Fehler, den ich erhalte, ist:

PHP Warning:  stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in class.smtp.php on line 327.

Hat jemand etwas Ähnliches festgestellt?

EDIT:

Ich habe auch versucht, die stream_context-Parameter (params: SSL context options ) einzustellen:

$options['ssl']['verify_peer'] = false;
$options['ssl']['verify_peer_name'] = false;
$options['ssl']['allow_self_signed'] = true;

Kein Glück, es scheitert immer noch mit dem gleichen Fehler wie oben gezeigt.

Vielen Dank.

25
gor181

PHP 5.6 führt die Überprüfung von SSL-Zertifikaten ein. Wenn also Ihre Konfiguration fehlerhaft ist, schlägt diese Fehlermeldung fehl. Sie sollten Ihr SSL-Protokoll korrigieren. Sie können jedoch das alte Verhalten wiederherstellen, indem Sie die SMTPOptions-Eigenschaft so einstellen, dass Zertifikate nicht überprüft werden.

$mail->SMTPOptions = array(
    'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true
    )
);

Durch das Bearbeiten der Bibliothek wird der gesamte Punkt der Bibliotheken beseitigt. Wenn Sie die von Kaf vorgelegte Antwort vermuten, wird der Code beim Aktualisieren beschädigt. Wirklich, tu das nicht.

Anmerkung des Herausgebers: Das Deaktivieren der SSL-Überprüfung hat Sicherheitsauswirkungen. Ohne Überprüfung der Authentizität von SSL/HTTPS-Verbindungen kann ein böswilliger Angreifer einen vertrauenswürdigen Endpunkt (z. B. GitHub oder einen anderen entfernten Git-Host) annehmen und Sie sind anfällig für ein Man-in-the-Middle Attacke . Stellen Sie sicher, dass Sie die Sicherheitsprobleme vollständig verstanden haben, bevor Sie dies als Lösung verwenden.

84
Synchro

Ich habe das gleiche Problem. Also habe ich die Datei class.smtp.php in Zeile 238 geändert:

public function connect($Host, $port = null, $timeout = 30, $options = array()) {
       if (count($options) == 0) {
           $options['ssl'] = array('verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true);
       }

jetzt funktioniert es gut!

Anmerkung des Herausgebers: Das Deaktivieren der SSL-Überprüfung hat Sicherheitsauswirkungen. Ohne Überprüfung der Authentizität von SSL/HTTPS-Verbindungen kann ein böswilliger Angreifer einen vertrauenswürdigen Endpunkt (z. B. GitHub oder einen anderen entfernten Git-Host) annehmen und Sie sind anfällig für ein Man-in-the-Middle Attacke . Stellen Sie sicher, dass Sie die Sicherheitsprobleme vollständig verstanden haben, bevor Sie dies als Lösung verwenden.

20
Kaf

Ich hatte das gleiche Problem. Es stellte sich heraus, dass meiner Postfix-Konfiguration die Einstellung für Zwischenprodukte und Stammzertifikate fehlte:

smtpd_tls_CAfile=/etc/ssl/certs/intermediate-root-bundle.crt

Obwohl diese Postfix-Konfiguration seit Jahren mit Outlook und Thunderbird zusammenarbeitet, war PHP wählerischer und konnte die SSL-Prüfung nicht bestehen.

Auch wenn Sie versucht sind, PHPMailer zu hacken, tun Sie dies bitte nicht und beheben Sie das zugrunde liegende Problem.

2
SurfMan

Ich wollte nur meine 2 Cent investieren, da ich seit Tagen nach einer Lösung gesucht habe, bis ich Kafs Lösung ausprobierte und es funktionierte !! Danke @Kaf

Wie auch immer ... Für mich funktionierte PHPMailer gut, bis ich beschloss, PHP auf PHP5.6 zu aktualisieren

Es wurden Änderungen zum Öffnen von ssl in PHP 5.6 vorgenommen. Hier sind die offiziellen Dokumente:

http://php.net/manual/de/migration56.openssl.php

Aus den Dokumenten heißt es, verify_peer und verify_peer_name auf false zu setzen.

Folgen Sie einfach Kafs Antwort und sehen Sie, ob das für Sie funktioniert.

Anmerkung der Redaktion: Das Dokument sagt auch, dass dies nicht empfohlen wird! Das Deaktivieren der SSL-Überprüfung hat Auswirkungen auf Sicherheit. Ohne Überprüfung der Authentizität von SSL/HTTPS-Verbindungen kann ein böswilliger Angreifer einen vertrauenswürdigen Endpunkt (z. B. GitHub oder einen anderen entfernten Git-Host) annehmen und Sie sind anfällig für ein Man-in-the-Middle Attacke . Stellen Sie sicher, dass Sie die Sicherheitsprobleme vollständig verstanden haben, bevor Sie dies als Lösung verwenden.

0
alvinb