Um zu überprüfen, ob das Zertifikat für google.com widerrufen wurde, habe ich den folgenden Befehl ausgeführt:
curl https://www.google.com --cacert GeoTrust_Global_CA.pem --crlfile gtglobal.pem -v
, aber ich habe den gefürchteten Fehler "SSL certificate problem" erhalten:
* About to connect() to www.google.com port 443 (#0)
* Trying 81.24.29.91... connected
* successfully set certificate verify locations:
* CAfile: GeoTrust_Global_CA.pem
CApath: /etc/ssl/certs
* successfully load CRL file:
* CRLfile: gtglobal.pem
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS alert, Server hello (2):
* SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
* Closing connection #0
curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html
Ich denke, dieser Fehler ist nicht korrekt, da Google ein gültiges Zertifikat haben sollte.
Wissen Sie, wie ich einen Curl-Befehl ausgeben kann, der dies korrekt ausführt?
Mehr Details
Wenn Sie sich fragen, warum ich diese spezifischen Dateien (GeoTrust_Global_CA.pem und gtglobal.pem) im Befehl curl verwendet habe, gehen Sie folgendermaßen vor:
- Ich habe mir zuerst angesehen, von welcher Zertifizierungsstelle das Zertifikat für https://www.google.com ausgestellt wurde . Es stellte sich heraus, dass es sich um GeoTrust Global CA handelt.
- Ich habe das GeoTrust Global CA-Stammzertifikat von hier heruntergeladen (dies ist die Datei GeoTrust_Global_CA.pem).
- Ich habe die entsprechende CRL (Zertifikatssperrliste) von hier heruntergeladen (dies ist die Datei gtglobal.pem).
linux
certificate
curl
Claudiu
quelle
quelle
Antworten:
Das ist mein alltägliches Drehbuch:
Ausgang:
quelle
Anscheinend können Sie eine Site nicht einfach mit einer einzigen einfachen Anfrage überprüfen. Siehe /programming/16244084/how-to-programmatically-check-if-a-certificate-has-been-revoked?lq=1 und ältere verwandte Fragen zum Stackoverflow.
curl hat für mich weder unter Windows noch unter Linux mit Zertifikatswiderrufslisten funktioniert . Warum sollten Sie Locken verwenden ? Openssl scheint angemessener:
Wir bekommen
Dann können wir überprüfen einige zertifikat:
grep crl
in der Ausgabe des obigen Befehls. Die interessanten Teile sind:Jetzt können wir crl manuell überprüfen:
Jetzt sehen wir eine Liste der gesperrten Zertifikate. IMHO, mit curl ist nicht genug, ein anderes Programm ist erforderlich, um Zertifikate zu überprüfen. Mit einem einfachen
Wir sehen, dass Curl keine Widerrufsbelehrung überprüft (auch keine Verbindung zu den relevanten Stellen). Es heißt nur
quelle
Anscheinend ist dies ein ziemlich häufiges Problem unter Windows, wie diese Frage zum Stackoverflow zeigt . Ich beziehe mich speziell auf die Antwort des Benutzers Артур Курицын, die ich hier zur Vereinfachung zitiere:
Auch dieser Artikel könnte auch nützlich sein.
quelle
Ich habe festgestellt, dass die Arbeitsweise derjenigen ähnelt, die bereits belichtet wurden, nur dass die Ausgabe an
dev/null
gesendet wird und die Verwendung relativ schnell erfolgt.curl -L -v -s https://www.google.de 1>/dev/null
quelle
curl
unter Unix nicht überprüft (es sei denn, Sie kompilieren es speziell mit einer SSL-Bibliothek, die dies automatisch für Sie erledigt).