Hallo zusammen,
ich habe plötzlich ein Problem mit dem Standard OXID PayPal-Modul 3.1.2. meiner alten OXID CE 4.8.3-Installation. Beim Checkout wirft es einen “Curl error: 77” aus. Geändert habe ich nichts an der Installation.
Hat jemand eine Idee, wo ich nach Ursachen forschen kann?
Das SSL-Zertifikat ist gültig und ist zuletzt am 13.10. erneuert worden. Die letzte erfolgreiche PayPal-Zahlung war außerdem nach der letzten Aktualisierung, nämlich am 27.10.
Auf dem Webserver läuft PHP 5.3.29 und CURL in der Version 7.53.1
P.S.: Der Shop wird in wenigen Wochen mit einer aktuellen OXID-Version neu installiert, in einer Umgebung mit aktueller PHP-Version. Leider nützt mir das im Moment nichts, da ich in der Zwischenzeit trotzdem gerne weiter PayPal-Zahlungen akzeptieren würde.
das Problem ist hier nicht das Zertifikat des Shops sondern das Zusammenspiel von deinem Server und Paypal. Der OXID baut im Hintergrund SSL Verbindungen zu Paypal auf, da liegt das Problem. Vermutlich ist deine SSL/Curl Version zu alt auf dem Server. Das kannst du testen in dem du einfach über die Console mit Curl eine Verbindung zu Papal machst.
Danke schon mal für den Hinweis. Ich bin nicht ganz sicher, was ich über Konsole eingeben muss und habe es mit diesem Fundstück aus einer Google-Suche versucht (ID, Passwort und Signatur natürlich eingesetzt):
Das Resultat war:
TIMESTAMP=2018%2d11%2d21T10%3a24%3a10Z&CORRELATIONID=2ff4b8ba2a010&ACK=Failure&VERSION=98&BUILD=000000&L_ERRORCODE0=10002&L_SHORTMESSAGE0=Security%20error&L_LONGMESSAGE0=Security%20header%20is%20not%20valid&L_SEVERITYCODE0=Error[
Also irgendwas mit “Header not valid”. Bin mir jetzt nicht sicher, ob das jetzt schon einen Hinweis auf das Problem liefert oder einfach nur daran liegt, dass der Aufruf nicht die richtige Form hatte…
der Fehler “Security Header not valid” den die API zurückliefert kann folgende Ursachen haben:
Falsche TLS Version (kleiner 1.2)
Alte Version OpenSSL Version
Altes PayPal Konto (PayPal hat für die API Daten je nach Art des Kontos eine maximale Laufzeit), Daten müssen einfach nur neu generiert werden.
Aufgrund der Verwendung von PHP 5.3 tippe ich auf eine der ersten beiden Optionen. Sollte dein Server TLS 1.2 unterstützen liegts am Modul.
In älteren PayPal Modulen die TLS Version hardcoded hinterlegt, ein CoreHack hilft
Danke für die vielen Tipps!
Ich habe auf dem Server TLS v. 1.2, das sollte also OK sein, wenn ich das richtig verstehe.
Das SSL-Zertifikat kommt von Let’s Encrypt.
Als Library wird mir angezeigt: “OpenSSL/1.0.2k-fips” - ist das eine untaugliche Version?
Falls ja, kann ich daran was ändern, solange ich noch die alte PHP-Version habe?
Das mit dem veralteten PayPal-Konto versuche ich mal parallel rauszufinden.
Zumindest für die nächsten Wochen ist das noch:
Oxid CE 4.8.3
Oxid PayPal-Modul 3.1.2.
Zwischenzeitlich hab ich mich noch mal bei PayPal eingeloggt, die Daten unter API Signature sind noch unverändert und werden nicht als inaktiv angezeigt oder so.
guck mal in die Datei modules\oe\oepaypal\core\oepaypalcurl.php
Dort gibt es das Array protected $_aEnvironmentParameters
Das ist das Setting was bei einem Kunden von mir das Verhalten gelößt hat
Hi Stefan,
vielen Dank für die vielen ausführlichen Tipps!
Die Änderungen an oepaypalcurl.php haben leider keinen Unterschied gemacht, obwohl SSLVERSION tatsächlich noch auf 1 stand. HTTP war OK.
Der Formular-Test hat jedenfalls gezeigt, dass die Zugangsdaten nach wie vor in Ordnung sind.
Ich habe keine .crt-Datei und keinen “cert”-Ordner gefunden, trotz rekursiver Suche im gesamten Modules-Verzeichnis. Sollte da eine sein?
Es gibt aber in den conf-Dateien für den vHost, also in der Struktur weit darüber, irgendwo einen Ordner SSL, darin ist u.a. eine .crt-Datei. Ich hab es mal mit dem absoluten Pfad darauf versucht: