Frage

Ich glaube, ich habe jetzt einen guten Griff, warum Sie entweder das SSL-Zertifikatbündel haben müssen, wenn Sie Inhalte von einem HTTPS-API wie Facebook ziehen.Aber meine Frage ist: Warum funktioniert dies manchmal auch ohne das Zertifikat und andere nicht? Scheint mir, dass Libcurl einen Weg hat, dieses Problem alleine zu überwinden.

Jeder weiß, warum oder wie das passiert?Jeder hatte die gleiche Erfahrung?

War es hilfreich?

Lösung

Das Verhalten von Curl in Bezug auf SSL-Zertifikate hängt von der Option curlopt_ssl_verifypeer ab. Angenommen, Sie verwenden PHP, können Sie die Funktion curl_setopt verwenden, um den Wert dieser Option zu ändern.

Ich habe nur oberflächliches Wissen über SSL, aber es scheint, dass sich Curl auf folgende Weise verhält: 0 bedeutet keine Überprüfung, 1 Überprüfungen, wenn das Zertifikat legitet ist, und 2 Überprüfungen prüfen auch, ob das Zertifikat an den richtigen Hostnamen ausgegeben wird.

Sie können ärgerliche Fehler ausschalten, indem Sie Curlopt_SSL_Verifypeer auf 0 einstellen, dies bedeutet jedoch, dass Sie nicht sicher sein können, dass Sie eine Verbindung zum richtigen Server haben, wie jeder möglicherweise spoof the dns . Das ist also sehr gefährlich.

Der offizielle Facebook PHP SDK liefert ein eigenes Zertifikat mit Curlopt_cainfo , aber nur, wenn Curl das Zertifikat nicht allein bestätigen konnte. Ich weiß nicht, warum die Entwickler des Facebook-SDK dies bedingt machen würden; Vielleicht, weil das Lesen von Zertifikaten teuer sein könnte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top