Anleitungen im Zusammenhang mit Beach
Wie man ältere Anbieter mit OpenSSL 3 aktiviert
Vor kurzem haben wir unsere Container-Basis aktualisiert - und damit auch OpenSSL auf Version 3. Für einige könnte das zu Problemen mit älteren Zertifikaten führen.
Übersicht
Wenn du die OpenSSL-Funktion in PHP verwendest, wird die harte Arbeit von den OpenSSL-Bibliotheken im Hintergrund erledigt. Mit Version 3 wurden einige veraltete Kryptografien entfernt - das kann zu Problemen führen, wenn du mit bestimmten älteren Zertifikaten arbeiten musst.
Du könntest auf Fehler wie diesen stoßen:
OpenSSL-Fehler: error:0308010C:digital envelope routines::unsupported
Um dieses Problem zu lösen, kannst du das Zertifikat entweder wie folgt neu packen:
openssl pkcs12 -legacy -in key.p12 -nodes -out key_decrypted.tmp
openssl pkcs12 -in key_decrypted.tmp -export -out key_new.p12
oder (falls das nicht möglich ist) aktiviere die Legacy-Provider. Es gibt allerdings keine Möglichkeit, das in PHP selbst zu tun, also muss man etwas tricksen. Lies weiter...
Wie du Legacy-Provider aktivierst
Du brauchst zwei Dinge: Eine Konfigurationsdatei und eine Umgebungsvariable. Erstens, die Datei. Entscheide dich für einen Ort in deinem Projekt, das Stammverzeichnis ist gut geeignet. Erstelle nun eine Datei mit dem Namen legacy-openssl.cnf und füge diese Datei ein:
Erstelle nun eine Instanzvariable in deinem Projekt. Sie muss OPENSSL_CONF heißen und den absoluten Pfad zu der Datei enthalten, die du oben erstellt hast. Wenn du sie im Stammverzeichnis deines Projekts ablegen würdest, wäre das /application/legacy-openssl.cnf.
Wenn du jetzt die Datei und die Variable bereitstellst, sollte dein OpenSSL-Code wieder funktionieren.