Как извлечь местоположение CRL из сертификата x509 с помощью утилиты OpenSSL

Мне нужно извлечь местоположение crl из центра сертификации, чтобы я мог использовать его при проверке сертификатов. Возможно ли это с помощью openssl Утилита, кроме использования -text вариант и попытка разобрать вывод (который кажется подверженным уязвимостям)?

2 ответа

Решение

openssl x509 имеет несколько переключателей для управления форматированием вывода, и некоторые поля можно не отображать, но получение только местоположения CRL кажется невозможным.

Кажется, вы должны проанализировать вывод.

Все еще разбор, но, по крайней мере, более точный, чем с x509, Это должно быть улучшено, чтобы лучше учитывать списки, cut -b21- действительно ярлык в случае простого списка из 1 элемента.

openssl asn1parse -in whatever.crt | grep -A 1 'X509v3 CRL Distribution Points' | tail -1 | cut -d: -f 4 | cut -b21- | perl -ne 's/(..)/print chr(hex($1))/ge; END {print "\n"}'
http://cdp.rapidssl.com/RapidSSLTLSRSACAG1.crl

по сравнению с:

openssl x509 -text -in whatever.crt |grep -A4 'CRL Distribution Points'
        X509v3 CRL Distribution Points:

            Full Name:
              URI:http://cdp.rapidssl.com/RapidSSLTLSRSACAG1.crl

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

php -r '$cert = file_get_contents("whatever.crt"); $ssl = openssl_x509_parse($cert); print_r($ssl["extensions"]["crlDistributionPoints"]);'

Full Name:
  URI:http://cdp.rapidssl.com/RapidSSLTLSRSACAG1.crl
Другие вопросы по тегам