openssl x509
tem algumas opções para controlar a formatação da saída e é possível não exibir alguns campos, mas colocar apenas a localização da CRL não parece ser possível.
Parece que você precisa analisar a saída.
Eu preciso extrair o local do crl de uma autoridade de certificação para que eu possa usá-lo na verificação de certificados. Isso é possível usando o utilitário openssl
além de usar a opção -text
e tentar analisar a saída (que parece propensa a vulnerabilidades)?
Ainda meio analisado, mas pelo menos mais preciso do que com x509
.
Ele precisa ser melhorado para melhor considerar as listas, o cut -b21-
é realmente um atalho no caso de uma simples lista de elementos.
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
comparado a:
openssl x509 -text -in whatever.crt |grep -A4 'CRL Distribution Points'
X509v3 CRL Distribution Points:
Full Name:
URI:http://cdp.rapidssl.com/RapidSSLTLSRSACAG1.crl
Ou, usando qualquer tipo de linguagem de programação, você pode ter algo próximo, dependendo de quanto as bibliotecas subjacentes decodificam as coisas para você:
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