Gere impressões digitais HPKP para toda a cadeia de certificados

Gere impressões digitais HPKP para toda a cadeia de certificados

A partir do comando abaixo, é possível gerar o pino Base64 apenas para o primeiro certificado de profundidade. Mas é necessário gerar pin para toda a profundidade do certificado.

openssl s_client -servername example.com -connect example.com:443 -showcerts 
| openssl x509 -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64

Dá apenas uma chave em vez de três,

cUPcTAZWKaASuYWhhneDttWpY3oBAkE3h2+soZS7sWs=

Então, como podemos gerar todos os três níveis de pinos?

Responder1

Embora eu concorde principalmente com Romeo que você já deve ter os arquivos de certificado no servidor, se vocêfazerprecisa processar vários certificados de um, s_clientvocê pode fazer algo como:

 openssl s_client ..... -showcerts \
   | awk '/-----BEGIN/{f="cert."(n++)} f{print>f} /-----END/{f=""}'
 # or input from bundle or chain file
 for c in cert.*; do
   openssl x509 <$c -noout -pubkey .....
 done
 rm cert.* 
 # use better temp name/location if you want

Responder2

Você pode extrair o emissor do certificado (CN do emissor). Mas a partir deste ponto você deverá obter esse certificado manualmente, pesquisando no site do emissor. Se você tiver acesso ao servidor web você encontrará no sistema de arquivos os certificados e executará seu script sobre o(s) arquivo(s) com certificados CA

informação relacionada