Проверьте цепочку сертификатов по CRL с помощью openssl - PullRequest
0 голосов
/ 14 марта 2020

Я пытаюсь узнать об обработке сертификатов и CRL, поэтому я создал следующий пример цепочки сертификатов:

Root CA (самоподписанный) → Промежуточный CA (подписанный Root CA) → Сертификат сервера (подписанный bei Intermediate CA)

Теперь я хотел бы протестировать отзыв сертификата, чтобы он действовал. Для этого я аннулирую сертификат сервера и создаю файл CRL (промежуточного центра сертификации) соответственно. Точки распространения CRL X509v3 присутствуют во всех файлах сертификатов и доступны через http, например:

X509v3 CRL Distribution Points:
    Full Name:
      URI:http://127.0.0.1:80/intermediate_ca.crl

(Который является CRL, который я только что создал. (То же самое для Root CA). CRL на http://127.0.0.1: 80 / ca.crl .) Я дважды проверил, действительно ли они присутствуют и доступны по этому URI.)

Далее я cat Root Файл CA pem и файл CA pem Intermediata в CAChain.pem.

Я хотел бы получить команду, которая получает сертификат сервера и CAChain.pem и "сканирует" цепочку сертификатов чтобы проверить это в общей сложности.

Я пытался перейти с

openssl verify -extended_crl -crl_check_all -crl_download -CAfile CAChain.pem -verbose serverCert.pem

, но я просто получаю:

Error loading CRL from http://127.0.0.1:80/ca.crl
140041593399104:error:27076072:OCSP routines:parse_http_line1:server response error:crypto/ocsp/ocsp_ht.c:260:Code=404,Reason=Not Found
...
error 3 at 0 depth lookup: unable to get certificate CRL

Опять CRL действительно присутствует в обозначенном URI. Вот почему я не могу объяснить ошибку 404. (Кроме того, мне кажется немного странным, что ошибка возникает из-за модуля OSCP, так как я сейчас использую CRL.)

Я бы очень Спасибо, если кто-нибудь скажет мне, в чём заключается моя ошибка и как я могу достичь того, что изначально планировал (проверка всей цепочки сертификатов с использованием CRL). Заранее спасибо!

1 Ответ

0 голосов
/ 20 марта 2020

Действительно, в основном я допустил две ошибки:

  • Файл CRL обязательно должен быть в формате DER, который я не знал. (Преобразование из формата PEM простое: openssl crl -in ${crlFile}.pem -outform DER -out ${crlFile}).
  • Конечно, точка распространения CRL сертификата должна быть одной из его родительского CA. (Так, например, для моего промежуточного CA, это должен быть один из root CA.)

Имея это в виду, а также связывая промежуточные сертификаты CA с серверными сертификатами, так как dave_thompson_085s очень Предлагаемые полезные комментарии: оригинальная команда

openssl verify -extended_crl -crl_check_all -crl_download -CAfile CAChain.pem -verbose serverCert.pem

работает сейчас.

Я создал gist того, что я сделал до сих пор. Это все еще довольно уродливо - я приведу в порядок и буду экспериментировать с OCSP в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...