Nach einem Upgrade auf PHP 5.6 funktionieren auf einmal diverse Web-Applikationen, hauptsächlich Webmail Clients wie roundcubemail nicht mehr. Eine Fehlermeldung im PHP log gibt es nicht, ebenso wenig wie im Rückgabecode des Funktionsaufrufs. Das aufbauen der Verbindung schlägt einfach fehl.
Nach Stundenlangem, verzweifelten Debuggen fand ich dann heraus, dass PHP aus lauter Pedanterie ab der Version 5.6 dem Entwickler/Administrator nicht mehr selbst überlässt ob er „gültige“ oder selbst signierte Zertifikate verwenden will. Wenn das Zertifikat nicht von einer gültigen Zertifizierungsstelle ausgestellt und inklusive der ganzen certificate chain validiert ist, verweigert PHP still und heimlich den Verbindungsaufbau! Einen Eintrag im error log gibt es ebenso wenig wie eine direktive in der php.ini um das auszuschalten.
Bei mir war das Problem noch etwas tiefgreifender, da ich beim IMAP-Mailserver ein gültiges Zertifikat für die IMAP Domain von StartSSL hatte und deshalb erst mal nicht so weit da rein gesucht hatte und somit vor einem grossen Rätsel stand wieso roundcubemail keine Verbindung zum IMAP Server mehr aufbauen konnte.
Das Problem war, dass im Mailserver nur das Domain- und CA Zertifikat von StartSSL angegeben war, nicht aber das Intermdiate-Zertifikat. Nachdem ich dann im Mailserver die ganze certificate chain konfiguriert hatte konnte sich roundcubemail endlich wieder mit dem IMAP Server verbinden.
Danke dem PHP-Projekt für einige Stunden vergeudete Lebenszeit. 🙁
One thought on “PHP: Keine SSL-Verbindungen mehr ab 5.6”