Ich versuche eine Verbindung über fsockopen
zu sendm.cert.legalmail.it
auf 465
port, ist SMTPS-Service namens PEC in Italien.
Mit jeder Version von PHP habe ich dieses Snippet ausprobiert:
%Vor% alles ist in Ordnung mit OpenSSL 1.0.2h
, wenn ich auf OpenSSL 1.0.2j
aufrüste dieses Snippet scheitert mit diesem Fehler:
Also mit OpenSSL 1.0.2j
versuche ich mich über die Kommandozeile zu verbinden:
Es funktioniert perfekt.
Ich versuche SSL auf dem Server mit testssl zu testen, das ist der Dump (entfernt):
%Vor% Nur TLS 1
ist verfügbar, ich versuche den Handshake zu TLS1 mit dieser uri zu erzwingen: 'tlsv1.0:://sendm.cert.legalmail.it'
, aber das Ergebnis ist dasselbe.
Ich bin auf Ubuntu 16.04, getestet mit PHP5.6 und PHP7.1.
Wo ist der Fehler? in openssl? in PHP? im Server-Handshake?
Update wenn ich chiper immer mit ./testssl.sh -E sendm.cert.legalmail.it:465
mit OpenSSL 1.0.2j
return:
Mit der Version OpenSSL 1.0.2h
Und php const OPENSSL_DEFAULT_STREAM_CIPHERS
ist das gleiche über alle Versionen, die es enthält:
Ok, nach einigen Recherchen finde ich warum:
PHP hat eine OPENSSL_DEFAULT_STREAM_CIPHERS
, die die Standardabfrage für openssl enthält, mit folgendem Befehl:
Ich bekomme alle Verschlüsselungen, die PHP mit der aktuellen Version von openssl installieren kann.
Zwischen 1.0.2h
und 1.0.2j
die gleiche Abfrage geben verschiedene Chiffren eine Drop-Unterstützung für diese:
EDH-RSA-DES-CBC3-SHA
DES-CBC3-SHA
Standardmäßig kann PHP die Verbindung nicht korrekt verarbeiten, aber wenn ich die $context
mit dieser Chiffre erzwinge, findet die Verbindung statt:
Bearbeitete Antwort vollständig: Sehen Sie sich die Antwort hier an HTTPS und SSL3_GET_SERVER_CERTIFICATE: Zertifikatsprüfung fehlgeschlagen, CA ist OK
Dies ist wahrscheinlich die Ursache für fsock sowie curl. Obwohl seine Frage auf windows / xampp steht, nehme ich an, dass es helfen wird. Ich nehme an, derjenige, der das OS aktualisiert hat, hat die php.ini nicht mit neuen Versionen zusammengefügt.
Für alle anderen, die das gleiche Problem haben: Es scheint, dass der TLS-Server von Legalmail jetzt TLSv1.2 unterstützt, das ist also kein Problem mehr für sie.
Tags und Links php ssl php-openssl