Genere huellas digitales HPKP para toda la cadena de certificados

Genere huellas digitales HPKP para toda la cadena de certificados

Desde abajo, el comando puede generar un pin Base64 solo para el certificado de primera profundidad. Pero es necesario generar un pin para toda la profundidad del 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

Da solo una clave en lugar de tres,

cUPcTAZWKaASuYWhhneDttWpY3oBAkE3h2+soZS7sWs=

Entonces, ¿cómo podemos generar los tres niveles de pines?

Respuesta1

Aunque estoy mayoritariamente de acuerdo con Romeo en que ya deberías tener los archivos de certificado en el servidor, sihacerSi necesita procesar varios certificados desde uno, s_clientpuede hacer 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

Respuesta2

Puede extraer el emisor del certificado (CN del emisor). Pero a partir de este punto deberás obtener este certificado manualmente, buscando en el sitio web del emisor. Si tiene acceso al servidor web, encontrará los certificados en el sistema de archivos y ejecutará su script sobre los archivos con certificados de CA.

información relacionada