ポイント
ホスト名(ドメイン名)を指定して下記コマンドを発行するとSSL証明書に関する情報が取得できます。
$ openssl s_client -connect <domain>:443 -servername <domain>
一方、-servername
オプションを指定しないと欲しい情報が取得できない場合があります。
これはWebサーバ側に複数ドメインが設定されている場合に起こりえます。
以下、解説です。
バージョン
$ openssl version OpenSSL 1.1.0k 28 May 2019
解説
opensslコマンドはs_client
を指定して実行することでSSLクライアントとして動作します。後続で「ホスト名:ポート番号」を指定すれば暗号化通信のための準備としてリクエストを送信し、そこでSSL証明書に関する情報が取得できます。
例えば
www.mtioutput.com
で送信してみます。
ちなみにブラウザで見ると以下の情報が確認できます。
コマンドを発行すると
$ openssl s_client -connect www.mtioutput.com:443 CONNECTED(00000003) depth=2 C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority verify return:1 depth=1 C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA verify return:1 depth=0 OU = Domain Control Validated, OU = PositiveSSL Multi-Domain, CN = hatenablog.com verify return:1 --- Certificate chain 0 s:/OU=Domain Control Validated/OU=PositiveSSL Multi-Domain/CN=hatenablog.com i:/C=GB/ST=Greater Manchester/L=Salford/O=Sectigo Limited/CN=Sectigo RSA Domain Validation Secure Server CA 1 s:/C=GB/ST=Greater Manchester/L=Salford/O=Sectigo Limited/CN=Sectigo RSA Domain Validation Secure Server CA i:/C=US/ST=New Jersey/L=Jersey City/O=The USERTRUST Network/CN=USERTrust RSA Certification Authority 2 s:/C=US/ST=New Jersey/L=Jersey City/O=The USERTRUST Network/CN=USERTrust RSA Certification Authority i:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root 3 s:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root i:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root --- ...
とツラツラ情報が出てきますがブラウザで確認したSSLのチェーン情報と相違しています。
そこで冒頭で述べた-servername
オプションです。
openssl s_client -connect www.mtioutput.com:443 -servername www.mtioutput.com CONNECTED(00000003) depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3 verify return:1 depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3 verify return:1 depth=0 CN = www.mtioutput.com verify return:1 --- Certificate chain 0 s:/CN=www.mtioutput.com i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3 i:/O=Digital Signature Trust Co./CN=DST Root CA X3 ---
ブラウザで確認した情報と一致しました。
このような事象が発生した理由に、上記ドメインはもともとはてなブログで用意されたドメインから変更した経緯があるからです。
確かにもともとのドメインである「hatenablog.com」の証明書を別ブログで確認すると以下のようになり、最初のオプションなしの実行結果と一致します。
独自ドメインを追加したことにより、複数ドメインが設置されたWebサーバーになるため、正しい情報を取得したければバーチャルホスト名を指定する必要があります。
ちなみに前のホスト名を残すことは、前のドメインへの同記事へのアクセスも拾うためのありがたい仕組みです。エイリアスとして機能しています。
コマンドで情報を確認する場合はご注意ください。