以下のコマンドを使用すると、最初の深さ証明書に対してのみ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
私は基本的にサーバーに証明書ファイルが既に存在する必要があるというRomeoのコメントに同意します。する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証明書を含むファイルからスクリプトを実行します。