SHA-1 証明書の規制・影響と SSL のエラーについて (後編)

第 2 部:SSL 接続時によくあるセキュリティ警告・エラーとその対策

03

インターネットを行う際や SSL 設定後に Web サイトを確認した際に、以下のようなセキュリティ警告を見たことはないでしょうか。

Internet Explorer Firefox Chrome
s4680-f01-a s4680-f01-b s4680-f01-c

SSL 通信を行う際、各ブラウザは SSL サーバー証明書(以降は、証明書と呼びます。)について、以下のようなことを毎回確認します。

  • 証明書が信頼できる発行元から発行されているか
  • 証明書が有効であるか(有効期間内か、失効されていないか)
  • サーバー証明書の FQDN と実際に接続している URL が一致しているか

これらの確認結果、「安全ではない」と各ブラウザが判断した場合に、セキュリティ警告・エラーが表示されます。

今回は、SSL 設定時によく目にするセキュリティ警告・エラーの原因と対策について、ご紹介します。

SSL 設定時によく目にするセキュリティ警告・エラーの原因と対策

信頼された証明機関から発行されたものではない、発行者が不明 など

ブラウザは、SSL 通信を行う際に「サーバーからブラウザに送信された証明書が信頼できる発行元から発行された証明書か?」ということを確認します。
これはサーバーから送られる「中間 CA 証明書」とブラウザ(OS)にあらかじめ登録されている「ルート証明書」を使用して判断します。
このエラーは、サーバー側に中間CA証明書が正しく設定されていない場合およびブラウザ側にルート証明書が登録されていない場合に発生します。

表示されるメッセージの例

Internet Explorer 11 Firefox 44 Chrome 48
この Web サイトで提示されたセキュリティ証明書は、信頼された証明機関から発行されたものではありません。 発行者の証明書が不明であるためこの証明書は信頼されません。 サーバが適正な中間証明書を送信しない可能性があります。追加のルート証明書をインポートする必要があるでしょう。 攻撃者が、example.com 上のあなたの情報(パスワード、メッセージ、クレジット カード情報など)を不正に取得しようとしている可能性があります。 NET::ERR_CERT_AUTHORITY_INVALID
s4680-f02-a s4680-f02-b s4680-f02-c

解決方法

サーバー側(サーバー管理者) ブラウザ側(Web訪問者)
お使いのサーバーで中間 CA 証明書の設定が正しく行われているか確認します。
Internet Explorer などの PC ブラウザから確認した場合、中間 CA 証明書に誤りがあっても正しいように見えるケースがあるため、「SSL サーバ証明書 導入サポートツール」などの外部の補助ツールや携帯電話・スマートフォンで接続確認を行うことをおすすめします。
ブラウザにルート証明書が登録されているか確認します。確認方法はお使いのブラウザやプラットフォームにより異なります。
例として、Windows OS の場合は以下の手順で確認可能です。 ルート証明書の登録確認方法について(Windows XP)  ルート証明書の登録確認方法について(Windows Vista/7) また、認証局各社が用意している接続テストサイトもルート証明書の有無をチェックに有用です。

有効期限が切れている

証明書には「発行からいつまで有効であるか」という有効期間が記載されており、ブラウザは SSL 通信を行う際にその証明書が有効期間内であるかを確認します。
このエラーは、証明書が有効期間外であるとブラウザが判断した場合に発生します。

表示されるメッセージの例

Internet Explorer 11 Firefox 44 Chrome 48
この Web ページで提示されたセキュリティ証明書は、有効期限が切れているかまだ有効ではありません。 この証明書の有効期限は YYYY 年 MM 月 DD 日 hh:mm に切れています。現在時刻は YYYY 年 MM 月 DD 日 hh:mm です。 攻撃者が、example.com 上のあなたの情報(パスワード、メッセージ、クレジット カード情報など)を不正に取得しようとしている可能性があります。 NET::ERR_CERT_DATE_INVALID
s4680-f03-a s4680-f03-b s4680-f03-c

解決方法

サーバー側(サーバー管理者) ブラウザ側(Web訪問者)
設定されているサーバー証明書の有効期間が満了していないか確認します。満了している場合は証明書の更新を行い、発行された新しいサーバー証明書をサーバーに設定します。(たまに更新だけ行って設定が漏れているケースが有りますのでご注意を!) お使いの PC の時刻設定が現在時刻であるか確認します。サーバー証明書の有効期間内であっても、PC の時刻がずれていることにより、満了している証明書と扱われてエラーが出ます。(Firefox ではエラーメッセージ内にも現在時刻が表示されますので確認しやすいです。)

別の Web サイトのアドレス用に発行

ブラウザは SSL 通信を行う際にサーバーから送られた証明書がその Web サイト用に発行された証明書であるか確認します。
具体的には「実際に SSL 接続を行う Web サイトの URL の FQDN(※)」と「証明書に記載されているコモンネーム(Common Name)もしくは SAN (Subject Alternative Name)のいずれかの値」が一致していることを確認します。

※FQDN はホスト名、ドメイン名(サブドメイン名)などすべてを省略せずに指定した記述形式です。
例)URL:https://www.cybertrust.ne.jp/index.html

FQDN: www.cybertrust.ne.jp

このエラーは、上記が不一致であるとブラウザが判断した場合に発生します。

表示されるメッセージの例

Internet Explorer 11 Firefox 44 Chrome 48
この Web サイトで提示されたセキュリティ証明書は、別の Web サイトのアドレス用に発行されたものです。 この証明書は example.com にだけ有効なものです。 攻撃者が、example.com 上のあなたの情報(パスワード、メッセージ、クレジット カード情報など)を不正に取得しようとしている可能性があります。 NET::ERR_CERT_COMMON_NAME_INVALID
s4680-f04-a s4680-f04-b s4680-f04-c

解決方法

サーバー側(サーバー管理者) ブラウザ側(Web 訪問者)
接続する URL に含まれている FQDN と同一の FQDN の証明書をサーバーへ設定します。検証時点で DNS 未登録であるために IP アドレスをURL として接続を行う場合は、接続元の hosts ファイルで名前解決を行うことで回避可能です。また、SNI 設定時かつ SNI 非対応の環境から接続をした場合、別サイト用の証明書が使用されるため、このエラーが発生しますのでご注意ください。
SNI で 1 台のサーバ上に複数の SSL サイトを運用 – 前編
正しい URL で接続しているか確認してください。

セキュリティで保護されたコンテンツなどのメッセージ

これまで紹介したセキュリティ警告・エラーは証明書設定に関係するものでしたが、Webコンテンツページを構成するための通信において、「安全なSSL通信の中に、安全ではない非SSLの通信が含まれていないか」も確認しています。
セキュリティで保護されたコンテンツなどのメッセージは非SSLのページをSSL化した際や、外部のhttpから始まるスクリプト、画像を埋め込んだ際によく発生します。
ブラウザ毎のメッセージと解決方法は以下サイバートラストのWebサイトにて解説していますので、こちらもご参考いただければ幸いです。

(おまけ)ブラウザ独自仕様のあれこれ

Firefox

Firefox で証明書の詳細情報を開いた際、「検証され信頼できる運営者情報はありません」と表示されることが有ります。
これは証明書の認証レベルにより表示が異なっており、EV 証明書の場合にだけ組織名が表示されます。

DV・OV 証明書 EV 証明書
s4680-f05-a s4680-f05-b

Chrome

・「古い暗号スイート…」と表示された場合

2016 年 2 月時点では、サーバー側で「TLS のバージョンが 1.2 以上」と「IsSecureTLSCipherSuite で指定されている条件」のどちらか一方でも満たされていない場合に表示されるようです。

s4680-f05-c

「IsSecureTLSCipherSuite」で指定されている内容は、「ssl_cipher_suite_names.cc」をご確認ください。
※「// Only allow ECDHE key exchanges」などでページ内を検索すると確認しやすいです。

・「このサイトのセキュリティは弱いため(SHA-1 署名)…」と表示された場合

これはサーバー証明書、中間 CA 証明書のいずれかに SHA-1 証明書が含まれている場合に表示されます。
対策としてはいずれの証明書も SHA-2 証明書に取り換えることです。

s4680-f05-d

・「証明書の透明性に関する情報がサーバーから提供されませんでした。」と表示された場合

これは CT(Certificate Transparency) という仕組みに対応していない証明書が使用されている場合に表示され、CT 対応の証明書を設定することで改善されます。

CT 対応の証明書 CT 非対応の証明書
s4680-f05-e s4680-f05-f

いかがでしたでしょうか。
SSL サーバー証明書は「通信の暗号化」と「Web サイトの認証」を実現するためのものです。
また、ブラウザはより安全に通信が行えるよう、ブラウザ独自の基準を満たしていない場合にセキュリティ警告・エラーを表示します。
Web 訪問者が「安心」で「安全」に Web サイトを利用するためには、認証や暗号に関するセキュリティ警告・エラーが発生する状況をできるだけ避ければなりません。
インターネットを行う際やサーバー証明書の設定前後で遭遇した際に、この記事が一助になればうれしいです。