HPKP-Fingerabdrücke für alle Zertifikatsketten generieren

HPKP-Fingerabdrücke für alle Zertifikatsketten generieren

Mit dem folgenden Befehl kann nur für das Zertifikat der ersten Tiefe eine Base64-PIN generiert werden. Es muss jedoch eine PIN für die gesamte Tiefe des Zertifikats generiert werden.

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 Pins auf allen drei Ebenen generieren?

Antwort1

Obwohl ich Romeo größtenteils zustimme, dass Sie die Zertifikatsdateien bereits auf dem Server haben sollten, wenn SieTunWenn Sie mehrere Zertifikate von einem aus verarbeiten müssen, s_clientkönnen Sie Folgendes 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

Antwort2

Sie können den Aussteller aus dem Zertifikat extrahieren (CN des Ausstellers). Ab diesem Punkt sollten Sie dieses Zertifikat jedoch manuell abrufen, indem Sie auf der Website des Ausstellers suchen. Wenn Sie Zugriff auf den Webserver haben, finden Sie die Zertifikate im Dateisystem und können Ihr Skript über die Datei(en) mit den CA-Zertifikaten ausführen.

verwandte Informationen