Как извлечь местоположение 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