Von unten kann der Befehl Base64-Pin nur für das erste Tiefenzertifikat generieren. Aber Sie müssen eine PIN für alle Zertifikatstiefen generieren.
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
Gibt nur einen Schlüssel statt drei,
cUPcTAZWKaASuYWhhneDttWpY3oBAkE3h2+soZS7sWs=
Wie können wir also alle drei Ebenen von Pins generieren?
Akzeptierte Antwort:
Obwohl ich Romeo größtenteils zustimme, dass Sie die Zertifikatsdateien bereits auf dem Server haben sollten, wenn Sie tun müssen die mehreren Zertifikate von einem s_client
verarbeiten Sie können so etwas tun:
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