wake-up-neo.com

PHP CURL CURLOPT_SSL_VERIFYPEER ignoriert

Aus irgendeinem Grund kann ich CURL nicht mit HTTPS verwenden. Alles hat gut funktioniert, bis ich das Upgrade der Curl-Bibliotheken ausgeführt habe. Jetzt erhalte ich diese Antwort, wenn ich versuche, CURL-Anforderungen auszuführen: Problem mit dem SSL-Zertifizierungsstellenzertifikat (Pfad? Zugriffsrechte?)

Die folgenden Vorschläge zu verwandten Themen wurden hier veröffentlicht. Ich habe versucht, Folgendes zu tun:

  • Deaktivieren Sie die Überprüfung für Host und Peer

    curl_setopt($cHandler, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($cHandler, CURLOPT_SSL_VERIFYPEER, true);
    
  • Aktivieren Sie CURLOPT_SSL_VERIFYPEER Und zeigen Sie auf cacert.pem, das von http://curl.haxx.se/docs/caextract.html heruntergeladen wurde

    curl_setopt($cHandler, CURLOPT_SSL_VERIFYPEER, true);  
    curl_setopt($cHandler, CURLOPT_CAINFO, getcwd() . "/positiveSSL.ca-bundle");
    
  • Ich habe auch versucht, dasselbe mit dem positivenSSL.ca-Bundle zu tun, das als Bundle-CA-Zertifikat für den Server bereitgestellt wurde, zu dem ich eine Verbindung herstellen möchte.

  • Bearbeiten Sie die PHP-Ini-Einstellungen mit curl.cainfo=cacert.pem (Datei im selben Verzeichnis und für Apache zugänglich)

  • Benenne /etc/pki/nssdb In /etc/pki/nssdb.old Um

Leider kann keine der oben genannten Lösungen mein Problem lösen, und es wird ständig ein Problem mit der Meldung "SSL-CA-Zertifikat (Pfad? Zugriffsrechte?)" Angezeigt.

Und ich brauche diese Bestätigung überhaupt nicht (mir sind Sicherheitsprobleme bekannt).

Hat jemand noch andere Vorschläge?

[~ # ~] Update [~ # ~]

Nach dem Update auf die neuesten Bibliotheken und dem Neustart der gesamten Box, scheint nicht nur Apache, was ich getan habe, alles wieder zu funktionieren !!!

101
Greg

Gemäß Dokumentation: Um das Host- oder Peer-Zertifikat zu überprüfen, müssen Sie alternative Zertifikate mit der Option CURLOPT_CAINFO Angeben, oder mit der Option CURLOPT_CAPATH Kann ein Zertifikatverzeichnis angegeben werden.

Siehe auch CURLOPT_SSL_VERIFYHOST:

  • 1, um das Vorhandensein eines allgemeinen Namens im SSL-Peer-Zertifikat zu überprüfen.
  • 2, um zu überprüfen, ob ein allgemeiner Name vorhanden ist und ob er mit dem angegebenen Hostnamen übereinstimmt.

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
210
clover

Wir hatten das gleiche Problem auf einer CentOS7-Maschine. Das Deaktivieren der VERIFYHOSTVERIFYPEER löste das Problem nicht, wir hatten keinen cURL-Fehler mehr, aber die Antwort war immer noch ungültig. Das Ausführen einer wget auf denselben Link wie die cURL führte ebenfalls zu einem Zertifikatfehler.

-> Unsere Lösung bestand auch darin, den VPS neu zu starten. Dies löste das Problem und wir konnten die Anforderung erneut ausführen.

Für uns schien dies ein Speicherproblem zu sein. Durch einen Neustart des VPS wurde die Bibliothek wieder in den Speicher geladen und jetzt funktioniert es. Also, wenn die obige Lösung von @clover funktioniert nicht Versuchen Sie, Ihren Computer neu zu starten.

1
Rvanlaak