自分のブラウザで会社のローカルイントラネット上のコンピュータを閲覧し(証明書を信頼できるとマークした後)、証明書をファイルにエクスポートできます。セキュリティを放棄せずにさまざまなコマンドラインツールを使用するときに人生を簡単にするために、このプロセスをシェルスクリプトで自動化したいと思います。
このトピックをGoogleで検索するのは困難でしたが、ほとんどの場合、wgetまたはカールを使用したときにダウンロードした証明書を信頼する方法についての結果を得ましたが、この場合は必要ありません。 wgetまたはカールを介してサーバーの公開自己署名証明書をローカルファイルにダウンロードするにはどうすればよいですか?
答え1
wgetやカールについてはよくわかりませんが、公開鍵にのみ興味がある場合は、次のように動作します。
openssl s_client -connect hostname.domain.tld:port 2>&1 </dev/null | sed -ne '/BEGIN CERT/,/END CERT/p'
通常、証明書のダウンロードについて話すときは、ルート証明書になります。次のコマンドを使用してVerisignの証明書を見つけ、ルート証明書をシステムにwgetまたはカーリングして、Verisign証明書で認証できます。この場合、具体的には「VeriSign Class 3 Extended Validation SSL SGC CA」ルートです。
$ openssl s_client -connect verisign.com:443 2>&1 </dev/null | openssl x509 -noout -text | grep "CA Issuers"
CA Issuers - URI:http://EVIntl-aia.verisign.com/EVIntl2006.cer
上記のコマンドは、関連付けられた証明書を表示するほぼすべてのサーバーで機能します。