Aby sprawdzić, czy certyfikat dla google.com został odwołany, wypróbowałem następujące polecenie:
curl https://www.google.com --cacert GeoTrust_Global_CA.pem --crlfile gtglobal.pem -v
, ale mam przerażający błąd „Problem z certyfikatem SSL”:
* 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
Myślę, że ten błąd jest nieprawidłowy, ponieważ Google powinien mieć ważny certyfikat.
Czy wiesz, jak mogę wydać polecenie curl, które robi to poprawnie?
Więcej szczegółów
Jeśli zastanawiasz się, dlaczego użyłem tych konkretnych plików (GeoTrust_Global_CA.pem i gtglobal.pem) w poleceniu curl, tak postępowałem:
- Najpierw sprawdziłem, co urząd certyfikacji wydał dla https://www.google.com . Okazuje się, że jest to GeoTrust Global CA;
- Pobrałem stąd główny certyfikat GeoTrust Global CA (jest to plik GeoTrust_Global_CA.pem);
- Pobrałem stąd odpowiednią listę CRL (listę unieważnień certyfikatów) (jest to plik gtglobal.pem).
linux
certificate
curl
Claudiu
źródło
źródło
Odpowiedzi:
To mój codzienny skrypt:
Ouput:
źródło
Najwyraźniej nie można po prostu zweryfikować witryny za pomocą jednego prostego żądania. Zobacz /programming/16244084/how-to-programmatically-check-if-a-certificate-has-been-revoked?lq=1 i starsze powiązane pytania na temat stackoverflow.
curl nie działał z moimi listami odwołań certyfikatów , ani w systemie Windows, ani w systemie Linux. Dlaczego warto używać loków ? Otwarcie wydaje się bardziej odpowiednie:
Dostajemy
Następnie możemy sprawdzić niektóre certyfikaty:
grep crl
w danych wyjściowych powyższego polecenia. Interesujące części to:Teraz możemy ręcznie sprawdzić crl:
Teraz widzimy listę unieważnionych certyfikatów. IMHO, użycie curl to za mało, wymagany jest inny program do sprawdzania certyfikatów. Wykonując proste
widzimy, że curl nie sprawdza odwołań (nawet nie łączy się z odpowiednimi miejscami). To tylko mówi
źródło
Najwyraźniej jest to dość powszechny problem w systemie Windows, jak pokazuje to pytanie dotyczące przepływu stosu . Mam na myśli szczególnie odpowiedź użytkownika Артур Курицын, którą cytuję tutaj dla Twojej wygody:
Również ten artykuł może być przydatny.
źródło
Jeden sposób, w jaki uważam, że działa, jest podobny do innych już ujawnionych, tylko wysyła dane wyjściowe
dev/null
i jest stosunkowo szybki w użyciu.curl -L -v -s https://www.google.de 1>/dev/null
źródło
curl
na Uniksie nie sprawdza się (chyba że specjalnie skompilujesz to z biblioteką SSL, która automatycznie zrobi to za ciebie).