openssl s_client出力から中間証明書を抽出する

openssl s_client出力から中間証明書を抽出する

openssl s_clientから中間証明書の詳細を取得する簡単な方法を探しています。出力はopenssl x509にパイプできますが、まずリーフ証明書が必要です。私はこのスクリプトを思い出して動作しますが、同じ目的を達成するためのより簡単なコマンドがあるかどうか疑問に思いました。

echo 1 | openssl s_client -connect unix.stackexchange.com:443 -showcerts 2>/dev/null | sed -n '/BEGIN\ CERTIFICATE/,/END\ CERTIFICATE/ p' | sed -n '/END CERTIFICATE/,$ p' | tail -n +2 | openssl x509 -noout -text 

答え1

次のように試してみることもできます。

$ echo 1 | \
  openssl s_client -connect unix.stackexchange.com:443 \
    -showcerts 2>/dev/null > /tmp/chained.pem && \
  openssl crl2pkcs7 -nocrl -certfile /tmp/chained.pem | \
  openssl pkcs7 -print_certs -text -noout

関連情報