1

Я пытаюсь написать код, который получает файл pcap в качестве входных данных и возвращает недействительные сертификаты от него.

Я проанализировал цепочки сертификатов и пытаюсь их проверить. Поскольку я получаю цепочки сертификатов из pcap длина цепочки не постоянна (иногда они включают в себя только 1 сертификат, который является подписанным (и действительным)).

Пусть cert0.pem будет сертификатом сервера, а certk.pem - сертификатом корневого центра сертификации.

Согласно моим исследованиям онлайн, я пытаюсь проверить сертификат следующим образом:

  1. Создайте файл certs.pem который содержит цепочку сертификатов в следующем порядке:
    certk.pem , certk-1.pem , ..., cert0.pem

  2. используйте команду (ca.pem - это файл, содержащий корневые сертификаты):

    openssl verify -CAfile ca.pem certs.pem 
    

Но иногда проверка выполняется неправильно даже для действительных сертификатов, как показано в следующем выводе:

C = US, O = GeoTrust Inc., CN = GeoTrust Global CA <br>
error 20 at 0 depth lookup: unable to get local issuer certificate<br> 
error certs.pem: verification failed

Пожалуйста, помогите мне, как я могу проверить цепочку сертификатов?

Кроме того, есть ли способ добавить проверку имени хоста в той же строке? (Я попытался добавить « -verify_hostname name », но снова результат был неожиданным).

1 ответ1

0

Для удаленной проверки сертификата упомянутая здесь ошибка говорит о том, что первый локальный сертификат (глубина 0) в файле цепочки, который вы пытаетесь проверить, а именно certk.pem поскольку сертификат корневого ЦС должен существовать / импортироваться в хранилище доверенных сертификатов локального клиента с которого вы выполняете проверку.

Как указано на сайте поддержки thawte.com:

Это результат проверки сертификата сервера, отправленного сервером. Сервер отправляет свою полную цепочку, состоящую из 2 сертификатов, один (глубина 0) является сертификатом сервера «CN = www.yourdomain.com», а другой - сертификатом CA «CN = Thawte Server CA». Как и все корневые сертификаты, этот сертификат самоподписан.

Чтобы избежать этой ошибки, ваш клиент должен иметь локальную копию сертификата корневого CA в своем хранилище доверенных сертификатов, либо в CAfile of CApath.

ТАКЖЕ: рассмотрите возможность использования опции -show_chain для просмотра более подробной информации и / или ошибок в цепочке сертификатов. Обратите внимание, что это поведение ошибки ожидается и по умолчанию при проверке сертификата от ненадежного CA. Вы можете проверить коды ошибок в вики openssl.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .