为所有证书链生成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 证书的文件上运行脚本

相关内容