2012-12-03 9 views
9

Ich werde einige Daten von Site A zu Site B mit PHP POST. Standort A verfügt über ein kommerzielles SSL-Zertifikat. Site B wird ein selbstsigniertes Zertifikat haben. Ist das machbar? Wenn nicht, gibt es irgendwelche Konfigurationsoptionen in PHP (oder Apache), die ich einstellen kann, um die Beschränkungen zu umgehen?POST-Anfrage mit einem selbstsignierten Zertifikat

+0

Warum versuchen Sie es nicht zuerst, wenn es machbar ist? – samayo

+0

Da die Anwendung nicht abgeschlossen ist und Site B noch nicht eingerichtet ist und auch nicht unter meiner Kontrolle steht – Aaron

Antwort

18

Vermutlich verwenden Sie Curl auf Server A? Es gibt einige Optionen in curl, um die Zertifikatsüberprüfung zu deaktivieren, wodurch selbstsignierte Zertifikate ermöglicht werden. Der Link wird noch verschlüsselt werden, aber Sie werden Vertrauen der Lage sein, diesen Server B nicht wirklich IS Server B:

curlopt_ssl_verifypeer (checking the CA auth chain) 
curlopt_ssl_verifyhost (hostname/certname match checks) 

Beispiel PHP-Code:

$ch = curl_init("https://example.com/example/path"); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
$response = curl_exec($ch); 
+5

Gibt es eine Möglichkeit, PHP (oder den Client im Allgemeinen) so zu konfigurieren, dass nur ein * spezifisches * selbstsigniertes Zertifikat akzeptiert wird? Ich könnte mir vorstellen, dass dies angeblich sicherer wäre, als das Zertifikat überhaupt nicht zu überprüfen. –

2

Es ist machbar. Wenn Sie in PHP cURL zum Ausführen des POST verwenden, müssen Sie nur die Optionen CURLOPT_SSL_VERIFYPEER und CURLOPT_SSL_VERIFYHOST auf false setzen, damit sie nicht fehlschlägt, weil das Zertifikat selbstsigniert ist.

2

Wenn Sie den Browser fragen Um die Daten zu senden, erhält der Benutzer die normalen Warnungen über das Zertifikat, das nicht vertrauenswürdig ist.

Wenn Sie cURL verwenden, um den POST innerhalb Ihres PHP-Codes auszuführen, sollten Sie die cURL-SSL-Prüfungen deaktivieren. Nach einer related question,

Sie werden CURLOPT_SSL_VERIFYPEER und CURLOPT_SSL_VERIFYHOST-FALSE einstellen müssen. Dies sollte> die beiden Hauptprüfungen deaktivieren. Sie werden vielleicht nicht beide benötigt, aber das sollte dich zumindest in Gang bringen.

Verwandte Themen