Como extrair o local da CRL do certificado x509 usando o utilitário OpenSSL

1

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)?

    
por Shawn J. Goff 06.07.2012 / 16:34

2 respostas

1

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.

    
por 06.07.2012 / 18:16
0

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
    
por 28.09.2018 / 18:29