以下のコマンドを使用すると、最初の深度の証明書に対してのみ Base64 ピンを生成できます。ただし、証明書のすべての深度に対してピンを生成する必要があります。
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
3つのキーではなく1つのキーのみを付与します。
cUPcTAZWKaASuYWhhneDttWpY3oBAkE3h2+soZS7sWs=
では、3 つのレベルのピンをすべて生成するにはどうすればよいでしょうか?
答え1
私はロメオの意見にほぼ同意しますが、証明書ファイルは既にサーバー上にあるはずですが、する複数の証明書を 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 サイトを検索して、この証明書を手動で取得する必要があります。Web サーバーにアクセスできる場合は、ファイルシステムで証明書を見つけ、CA 証明書を含むファイルに対してスクリプトを実行します。