Ich bin in dieser sehr unglücklichen Situation:
Meine Website verwendet, um Daten mit Payment-Gateway auszutauschen, aber wie TLSv1.0 gelöscht wird, kann ich nicht mehr PHP cURL-Bibliothek oder sogar file_get_contents()
(oder wget / lynx / curl über Shell)
Gibt es eine Problemumgehung, irgendeine Option, wie TLSv1.1 + gesicherter Server verbunden wird, ohne eingebaute Bibliotheken zu verwenden?
Ich weiß, dass in PHP einige Klassen existieren, wie phpseclib , was ein SSH-Client ist, ideal für Leute, die SSH2 Modul
Gibt es so etwas für PHP? Gibt es eine Möglichkeit, eine Verbindung zu meinem Gateway herzustellen?
Bis jetzt ist meine beste Idee Verbindung zu Gateway durch andere Server (mit aktualisierter Software)
Sobald ich das Dienstprogramm stunnel für meinen Nicht-TLS-Client verwendet habe, zitiere von der Website:
Stunnel ist ein Proxy, der TLS-Verschlüsselungsfunktionen zu vorhandenen Clients und Servern ohne Änderungen im Programmcode hinzufügt. Die Architektur ist auf Sicherheit, Portabilität und Skalierbarkeit (einschließlich Lastenausgleich) optimiert und eignet sich daher für große Bereitstellungen.
Gibt es eine Problemumgehung, irgendeine Option, wie TLSv1.1 + gesicherter Server verbunden wird, ohne eingebaute Bibliotheken zu verwenden?
Ich kann mir fünf Workarounds vorstellen:
1) Es ist möglich (aber schwierig), mehrere Versionen von OpenSSL (oder sogar Curl) installiert zu haben. Sie können sogar LD_PRELOAD_LIBRARY verwenden, um eine vorhandene binäre Use-Bibliothek von einem anderen Ort aus zu erstellen. Ich denke, das ist ein chaotischer Weg, es zu tun.
2) Dies wäre mit Docker wirklich einfach. Leider benötigt es einen modernen Kernel, so dass Sie es wahrscheinlich nicht auf Ihrem Server installieren können. Sie könnten jedoch ein moderneres Betriebssystem installieren und Ihren Server dann in einem Docker-Container mit dem älteren Betriebssystem installieren. Aber das kann ungefähr genauso viel Arbeit sein wie das Verschieben Ihrer Website auf ein neueres Betriebssystem.
3) Anstelle von Docker verwenden Sie einfach chroot
. Verwenden Sie in einer neueren Box "ldd", um alle Abhängigkeiten zu finden. Kopiere sie (plus Curl) in eine Chroot. Kopiere dieses Verzeichnis auf deinen Server und starte "chrooot dir curl". Die Binärdatei wird die neueren Bibliotheken sehen und funktionieren. Dies dauert nur ein paar Minuten, um jemanden einzurichten, der weiß, was er tut.
4) Verwenden Sie eine statisch verknüpfte Version von curl, in die ein neueres OpenSSL kompiliert wurde.
5) Verwenden Sie ein Programm, das OpenSSL nicht verwendet. Zum Beispiel verwenden einige go (lang) Programme ihre eigene Verschlüsselung und kompilieren zu einer statischen Binärdatei. Zum Beispiel: Ссылка
Die ersten 2 sind in Ihrem Setup vielleicht etwas unpraktisch, aber eines der letzten 3 funktioniert.
Ich mochte Ihre ursprüngliche Idee der Proxys zu einem anderen Server, außer dass Sie die Sicherheitsbeschränkungen umgehen, die durch das Gateway auferlegt werden, und wenn Sie mit Zahlungsinformationen umgehen, ist das wahrscheinlich keine Idee.
Wenn Sie jedoch eine Vagrant-Instanz auf Ihrem eigenen Server mit aktualisierten Bibliotheken ausführen können, können Sie die unsichere Anfrage an die Vagrant-Instanz auf localhost weiterleiten und die Box und dann nicht die Vagrant-Instanz verlassen Aktualisierte Bibliotheken führen die sichere Kommunikation mit Ihrem Gateway durch.
Ich wollte Stunnel vorschlagen. ABER dafyc gut bemerkt.
Diese PCI-Beschränkungen sind nicht implementiert, um Leute zu verlangsamen (nur .. lol). Sie existieren zum Schutz.
Sie werden Ihr Problem mit Stunnel lösen. Aber warum nicht den Website-Server aktualisieren?
Sie haben das SSL-Outdate ausfindig gemacht, aber als Server sind mehrere andere Bugs verfügbar.
Wenn sie eine andere Schwäche erforschen und Root-Zugriff erhalten, werden sie ein Stunnel-Passwort haben, um herauszufinden, was in der Pipe ist.
Das scheint also nicht gut genug zu sein, um die Zuverlässigkeit zu gewährleisten, die PCI von Ihnen verlangt.
Ich habe bereits eine Antwort gepostet, aber als ich Kommentare gelesen habe, kann man keine Tools auf dem Server installieren. Sie können PHP-eigene Funktionen namens PHP verwenden Streams . Dies ist ein Codebeispiel für die alte twitter-API:
%Vor%