Shammer's Philosophy

My private adversaria

OpenSSLで接続先サーバの証明書を取得する

OpenSSLのs_clientにはshowcertsというオプションがあり、それを使用することで証明書の内容を表示できる。この表示された証明書のみを保存すれば証明書を取得できる。以下のような感じで実行する。

$ openssl s_client -connect $Host:443 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' > certificate.pem
$

SNIが有効な宛先の場合は以下のようにする。

$ openssl s_client -connect $Host:443 -servername $SNI_VALUE 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' > certificate.pem
$