メニュー 閉じる

WebサーバーなどのSSL証明書 検証方法


多くのWebサイトがHTTPS化されることで発生するトラブルが「正しくSSL証明書が設定されていない」事によるWebサイトの表示ができないというトラブルです。SSL証明書をインストールしても正しい設定ではない場合、Webブラウザでエラーを表示したり通信に失敗する場合があります。

Webブラウザの鍵マーク検証で不足の理由

SSL証明書が正しく反映されたかを確認する方法として、Webブラウザの鍵マークから証明書の情報を表示して確認する方法があります。
この方法で検証した場合とopensslで検証した場合で何が違うでしょうか。

Webブラウザによっては、接続するSSL証明書に記載されている Authority Information Access 拡張フィールドから、必要な中間証明書を自動でインストールする機能を持つものもあります。
これにより有効期限が切れた中間証明書をインストールしていたり、中間証明書のインストールミスがあっても、Webブラウザでは表示されますのでトラブルに気がつきにくいという問題があります。

全てのWebブラウザが中間証明書の自動インストールに対応しているわけではなく、スマートフォンなどのブラウザではエラーになることがあります。
このため、Webブラウザの鍵マークでの検証ではなく、opensslでの検証をオススメします。

SSL証明書の検証方法

Webサーバーやメールサーバーに設定した証明書が正しく機能しているか確認するためには、opensslコマンドを使用して次のように実行します。

[FQDN]には、www.infocircus.jpなどのドメイン名を指定します。

SSL証明書の検証例

www.infocircus.jp のSSL証明書を検証した結果は、次のようになります。

SSL証明書 検証結果の確認方法

検証で depth=X の表示になっている部分は、証明書のツリーを表しています。
depth=0がオリジナルの証明書、depth=1… とルート証明書までのツリーが確認できます。

上記の例では、depth=0でCN=www.infocircus.jpとなり、depth=1(1つ上位)でCN = Let’s Encrypt Authority X3、depth=2でルート証明書のCN = DST Root CA X3を示しています。

SSL証明書の検証が正常だったかは最後の行を確認します。

Verify return code が 0(ok)となっていますので、SSL証明書が正しく検証されていることが確認できます。
この Verify return codeが、0(ok)でない場合、SSL証明書の設定に間違いがあるか、指定している証明書が不正の可能性があります。

SSL検証に失敗したときの例

実際にSSL証明書の検証に失敗するとどうなるのか、いくつか代表的な例をご紹介いたします。

証明書の有効期限が切れている

SSL証明書の有効期限が切れている場合には、Verify return codeで次のようなエラーとなります。

中間証明書のチェインが不正な場合

その他のエラーコード

Verify return code: 18 (self signed certificate)
自己証明書を使用している場合。もしくは証明書の指定を間違っている場合など
Verify return code: 20 (unable to get local issuer certificate)
ローカルの証明書にアクセスできないもしくは、複数のWebサーバーなどで証明書が異なっている場合など

メールサーバーのSSL証明書の検証

メールサーバーのSMTP(TLS接続)でSSL証明書の確認を行うには、次のコマンドを使用します。

実際にメールサーバーの証明書を確認した結果が次の通りです。
サンプルのため、サーバー名は変更してあります。

imapサーバーの証明書の検証

同様にimapサーバーの証明書を検証するには以下のコマンドを実行します。

これで、Webサーバー(HTTPS)とメールサーバーのSSL証明書の検証ができました。


;