認証局からcrlの場所を抽出して、証明書の検証に使用できるようにする必要があります。これは、-text
オプションを使用して出力を解析しようとする以外に、openssl
ユーティリティを使用して可能ですか(脆弱性が発生しやすいようです)?
openssl x509
には、出力のフォーマットを制御するためのスイッチがいくつかあり、一部のフィールドを表示しないことも可能ですが、just 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