為所有憑證鏈產生HPKP指紋

為所有憑證鏈產生HPKP指紋

從下面的命令能夠僅為第一個深度憑證產生 Base64 引腳。但需要為所有深度的憑證產生 pin。

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

只提供一把鑰匙而不是三把,

cUPcTAZWKaASuYWhhneDttWpY3oBAkE3h2+soZS7sWs=

那麼,我們要如何產生所有三個等級的引腳呢?

答案1

儘管我基本上同意羅密歐的觀點,即您應該已經在伺服器上擁有證書文件,如果您需要處理來自一個的多個證書,s_client您可以執行以下操作:

 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

答案2

您可以從證書中提取頒發者(頒發者的 CN)。但從現在起,您應該透過在頒發者網站上搜尋來手動取得此證書。如果您有權存取 Web 伺服器,您將在檔案系統中找到證書,並在具有 CA 證書的檔案上執行腳本

相關內容