Чтобы проверить, был ли отозван сертификат для google.com, я попробовал следующую команду:
curl https://www.google.com --cacert GeoTrust_Global_CA.pem --crlfile gtglobal.pem -v
, но я получил страшную ошибку "проблема сертификата 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
Я думаю, что эта ошибка не является правильной, так как Google должен иметь действительный сертификат.
Знаете ли вы, как я мог бы выполнить команду curl, которая делает это правильно?
Подробнее
Если вы задаетесь вопросом, почему я использовал эти конкретные файлы (GeoTrust_Global_CA.pem и gtglobal.pem) в команде curl, я сделал следующее:
- Сначала я посмотрел, что CA выпустил сертификат для https://www.google.com . Оказывается, это GeoTrust Global CA;
- Я загрузил корневой сертификат GeoTrust Global CA отсюда (это файл GeoTrust_Global_CA.pem);
- Я скачал соответствующий CRL (список отзыва сертификатов) отсюда (это файл gtglobal.pem).
linux
certificate
curl
Клаудиу
источник
источник
Ответы:
Это мой повседневный сценарий:
Ouput:
источник
По-видимому, вы не можете просто подтвердить сайт одним простым запросом. См. Https://stackoverflow.com/questions/16244084/how-to-programmatics-check-if-a-certificate-has-been-revoked?lq=1. и более ранние связанные вопросы по stackoverflow.
curl не работал со списками отзыва сертификатов для меня, ни в Windows, ни в Linux. Почему вы должны использовать локон ? Openssl кажется более подходящим:
Мы получаем
Затем мы можем проверить некоторые сертификаты:
grep crl
в выводе вышеуказанной команды. Интересные части:Теперь мы можем вручную проверить crl:
Теперь мы видим список отозванных сертификатов. ИМХО, использования curl недостаточно, для проверки сертификатов требуется другая программа. Делая простой
мы видим, что curl не проверяет аннулирование (даже не подключаясь к соответствующим местам). Это просто говорит
источник
По-видимому, это довольно распространенная проблема в Windows, как показывает этот вопрос по stackoverflow . Я специально ссылаюсь на ответ пользователя Артур Курицын, который я привожу здесь для вашего удобства:
Кроме того, эта статья также может быть полезной.
источник
Один способ, который я обнаружил, похож на другие, уже выставленные, только он отправляет выходные данные
dev/null
и относительно быстр в использовании.curl -L -v -s https://www.google.de 1>/dev/null
источник
curl
Unix не проверяет (если вы специально не скомпилируете его с библиотекой SSL, которая автоматически сделает это за вас).