Как я могу проверить сертификаты SSL в командной строке?

52

Я пытаюсь проверить / подтвердить, что ключ rsa, ca-bundle и сертификат, хранящиеся здесь, в порядке. Они не обслуживаются веб-сервером. Как я могу их проверить?

xenoterracide
источник
Посмотрите на openssl x509раздел руководства.
Алекс
Руководство по проверке OpenSSL может помочь вам здесь. Также на этой странице есть несколько отличных примеров.
Стефан Ласевский

Ответы:

61

Предполагая, что ваши сертификаты в формате PEM, вы можете сделать:

openssl verify cert.pem

Если ваш "ca-bundle" является файлом, содержащим дополнительные промежуточные сертификаты в формате PEM:

openssl verify -untrusted ca-bundle cert.pem

Если ваш openssl не настроен на автоматическое использование установленного набора корневых сертификатов (например, в /etc/ssl/certs), вы можете использовать -CApathили, -CAfileчтобы указать CA.

Энди
источник
9
Внимание, команда openssl verify является более допустимой, чем вы могли ожидать! По умолчанию, в дополнение к проверке данного CA-файла, он также проверяет наличие подходящих CA в системном каталоге certs, например / etc / ssl / certs. Чтобы предотвратить такое поведение и убедиться, что вы проверяете свой конкретный сертификат CA, предоставленный CAfile, вы также должны передать опцию -CApath с несуществующим каталогом, например: openssl verify -verbose -CApath nosuchdir -CAfile cacert.pem server .crt
DSimon
2
Еще одно предостережение: если вы используете, -CApath nosuchdirто комбинация server.crt и cacert.pem должна включать корневой CA; если openssl может работать только с промежуточным CA с этими файлами, то он будет жаловаться.
DSimon
Это говорит, что нет такого файла в /certs/. это вызовет проблемы? потому что я застрял в ситуации, когда мой сервер работает, http curl работает, но https .. curl получает ошибку. где сайт перестал работать.
Гиорги Гвимрадзе
18

Вот одна строка для проверки цепочки сертификатов:

openssl verify -verbose -x509_strict -CAfile ca.pem -CApath nosuchdir cert_chain.pem

Это не требует установки CA в любом месте.

См. Https://stackoverflow.com/questions/20409534/how-does-an-ssl-certificate-chain-bundle-work для получения подробной информации.

Vadzim
источник
1
Предупреждение, опция -CAfile является более допустимой, чем вы могли бы ожидать. Смотрите мой комментарий о принятом ответе для деталей.
DSimon
1
@DSimon, я добавил -CApath nosuchdirэто, чтобы ответить. Спасибо.
Вадим
Нет проблем, рад помочь. :-) Одна оговорка, которую я выяснил после публикации моего предыдущего комментария: если файл, указанный с помощью -CAfile, сам является просто промежуточным сертификатом, то openssl будет жаловаться. Это правильное поведение, поскольку verifyтребует полной цепочки вплоть до корневого ЦС, но может вводить в заблуждение.
DSimon
2
Моя версия ( OpenSSL 1.1.1 11 Sep 2018) требует, чтобы аргумент -CApathбыл существующим каталогом.
Джейк Кобб