À partir de la commande ci-dessous capable de générer une broche Base64 pour le premier certificat de profondeur uniquement. Mais besoin de générer une broche pour toute la profondeur du certificat.
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
Donne une seule clé au lieu de trois,
cUPcTAZWKaASuYWhhneDttWpY3oBAkE3h2+soZS7sWs=
Alors, comment pouvons-nous générer les trois niveaux d'épingles ?
Réponse acceptée :
Bien que je sois d'accord avec Romeo sur le fait que vous devriez déjà avoir les fichiers de certificat sur le serveur, si vous faites besoin de traiter les multiples certificats d'un s_client
vous pouvez faire quelque chose comme :
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