從下面的命令能夠僅為第一個深度憑證產生 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 證書的檔案上執行腳本