Wenn ich versuche, unter Windows Curl zu verwenden, um eine https
URL abzurufen , wird der gefürchtete "Verbindungsfehler (60)" angezeigt.
Die genaue Fehlermeldung lautet:
curl: (60) Problem mit dem SSL-Zertifikat. Überprüfen Sie, ob das CA-Zertifikat in Ordnung ist. Details:
Fehler: 14090086: SSL-Routinen: SSL3_GET_SERVER_CERTIFICATE: Zertifikatprüfung fehlgeschlagen
Weitere Details finden Sie hier: http://curl.haxx.se/docs/sslcerts.html
Wie kann das behoben werden?
Antworten:
Ich weiß nicht warum, aber ich habe diese Informationen nicht an einem Ort gefunden.
Laden Sie die SSL-fähige Version von Curl herunter oder erstellen Sie die SSL-fähige Version selbst.
Laden Sie unter http://curl.haxx.se/docs/caextract.html die Datei cacert.pem herunter.
Platzieren Sie die Datei curl.exe und die PEM-Datei im selben Verzeichnis.
Benennen Sie die
cacert.pem
Datei in umcurl-ca-bundle.crt
Führen Sie curl.exe erneut aus!
BEARBEITEN:
Es gibt andere Möglichkeiten, das Problem zu lösen. Diese besondere Art und Weise beruht auf einem Cacert, der vom Hersteller von Curl hergestellt wird. Dies ist möglicherweise nicht das, was Sie möchten, und insbesondere funktioniert dies möglicherweise nicht in Fällen, in denen Sie über eine weniger als bekannte Zertifizierungsstelle (z. B. eine nur Ihrem Unternehmen bekannte Stelle) für das von der SSL-Site verwendete Zertifikat verfügen . In diesem Fall möchten Sie Ihre eigene
curl-ca-bundle.crt
Datei generieren . Sie können certreq.exe und openssl.exe verwenden, um ein solches Zertifikat aus dem IE / Windows-Speicher zu exportieren und anschließend in das PEM-Format zu konvertieren.quelle
curl
markiertWinSSL
unter Windows 7 verwendet. Gemäß dem Dokumentationslink sollten so gekennzeichnete Versionen nur mit den Zertifikaten des Systems funktionieren. Ich habe jedoch den Fehler erhalten, bis ich Ihrer Lösung gefolgt bin.set CURL_CA_BUNDLE=<path to crt>
. Stellen Sie sicher, dass das Format der Datei korrekt ist. Diese Methode funktioniert auch, wenn Sie mehrerecurl
Installationen haben, z. B. Git, Vagrant ...Ich habe ein PowerShell-Skript erstellt, mit dem die
ca-cert.crt
Datei basierend auf den CA-Zertifikaten geschrieben werden kann, die in Ihrem Windows-Zertifizierungsspeicher (CurrentUser oder LocalMachine) installiert sind. Führen Sie das Skript folgendermaßen aus:Dadurch wird die
curl-ca-cert.crt
Datei erstellt, die im selben Verzeichnis wie gespeichert werden soll,curl.exe
und Sie sollten in der Lage sein, dieselben Sites wie in Ihren Windows-Anwendungen zu validieren (beachten Sie, dass diese Datei auch von verwendet werden kanngit
).Das "offizielle" Skript ist auf GitHub zu finden , aber die ursprüngliche Version ist hier als Referenz aufgeführt:
quelle
Eigentlich hatten wir das gleiche Problem mit Typheous / Ruby. Die Lösung bestand darin, die Datei cacert.pem herunterzuladen und unter C: \ Windows \ System32 (oder wo immer sich Windows befindet) zu speichern. Danach setzen wir eine globale Umgebungsvariable wie hier beschrieben, wobei der "Variablenname"
CURL_CA_BUNDLE
und der "Variablenwert" der Pfad zur Datei sein müssen%SystemRoot%\System32\cacert.pem
.Wenn Sie eine neue CMD-Sitzung starten, können Sie jetzt Typheous / Libcurl verwenden, um SSL-Verbindungen zu authentifizieren. Ich habe dies erfolgreich mit Windows 8.1 versucht.
quelle