「接続はプライベートではありません」とはどういう意味か? | SSLエラーの対処法

WebサイトのSSL証明書が無効である場合または見当たらない場合、ユーザーがWebサイトを読み込もうとするとエラーメッセージが表示されることがあります。

Share facebook icon linkedin icon twitter icon email icon

プライベートではない接続

学習目的

この記事を読み終えると、以下のことができます。

  • ブラウザー内のエラーメッセージ「接続はプライベート/安全ではありません」の意味を理解する
  • SSL証明書の問題が原因でエラーが発生する仕組みを理解する
  • エラーの対処法を習得する

「接続はプライベートではありません」というエラーはどういう意味か?

「接続はプライベートではありません」というメッセージが表示されて、Webサイトを表示できないという経験をした方は結構いると思います。このエラーは、暗号化されているというクライアントデバイス側の予想に反して、クライアント(ノートパソコンやタブレットのようなユーザーのデバイス)とサーバー(Webサイトのホスト)間の接続が暗号化されていないことを意味します。

Connection Not Private

その結果、攻撃者は、ユーザーがWebサイト上で行うことを見ることができてしまいます。クライアントとサーバー間のメッセージは、暗号化によってスクランブルをかけられることなく、平文で送信されます。また、クライアントは、正しいサーバーに接続していることを検証できません。

ブラウザーが「接続はプライベートではありません」または「接続は安全ではありません」というメッセージを表示するのはこのためです。ブラウザーはWebサーバーを検証できないうえ、メッセージを暗号化して攻撃者がメッセージを読み取るのを阻止することができません。

このエラーは、WebサイトのSSL証明書に関する問題によって引き起こされます。SSL証明書がない、期限が切れている、または正当な認証局によって発行されていない、あるいは何らかの理由でクライアントがアクセスできない、といった問題です。SSL証明書は、セキュアなHTTPS接続を介してWebサイトを提供するのに必要です。

SSL証明書が無効である、またはSSL証明書が見当たらないという状況は、たとえるなら店のレジ係がアルコール飲料を購入できる飲酒年齢に達しているかどうかを確認した際に、客が政府発行の身分証を提示する代わりに、「この人の名前はジェフで、年齢は22才です」と書かれた手書きのメモを提示するようなものです。もちろん、その紙切れは有効な身分証ではありません。その客は22才でないかもしれないのとジェフという名前でないかもしれません。レジ係が不審だと思って取引を中止しても致し方ありません。

その客のように、SSL証明書のないWebサイトは身元を証明できません。そのうえ、SSL証明書のないWebサイトは通信を暗号化できません。身分証を持参していないことで、世界中の人がその客とレジ係の会話を聞くことができてしまうのです。

  • Google Chromeでは、エラーメッセージ「接続はプライベートではありません」の後に「攻撃者が[Webサイト]から情報を盗もうとしている可能性があります」というメッセージが続きます。
  • Mozilla Firefoxでは、「接続は安全ではありません」というメッセージになっています。
  • Microsoft Edgeでも、「このサイトは安全ではありません」というメッセージになっています。

これはお勧めしませんが、多くの場合、ユーザーはこのメッセージが表示されてもページにアクセスします。HTTPSがなければ、さまざまなサイバー攻撃が可能になってしまいます。

SSL証明書とは?HTTPSとは?

SSL証明書は、Webサイトの所有権を確認し、暗号化された安全な接続を可能にします。次のような情報を使用してWebサーバーにインストールされたテキストファイルです。

  • 証明書の有効期限
  • 証明書が発行されたドメイン名
  • ドメインを所有する人物、組織、またはデバイス
  • 証明書を発行した認証局
  • 公開鍵

SSL証明書は、SSL暗号化またはTLS暗号化を使用してWebサイトとの間の通信を暗号化するのに必要です。これをHTTPSとも呼びます。

TLS/SSLを使用してデータが暗号化されている場合、クライアントとサーバー間でやり取りされるデータを誰かが傍受しても、意味をなさないランダムなデータにしか見えません。データが暗号化されていないと、誰かが傍受して簡単に読めてしまいます。暗号化は個人的な手紙を郵送するときに内容を保護する封筒のようなものです。

SSLエラーの原因

SSL証明書に関する多くの問題が原因で「接続はプライベートではありません」エラーが発生します:

WebサイトのSSL証明書が無効である、または見当たらない。これには、いくつかの理由が考えられます。提示されたSSL証明書に掲載されているWebサイトが間違っている、SSL証明書の期限が切れている、あるいはSSL証明書そのものが存在しない、といったことが考えられます。たとえば、ユーザーがhttps://www.example.comとブラウザーに入力したが、example.comにはHTTPSのURLが存在しないというケースです。

SSL証明書に、ドメイン名の種類が含まれていない。たとえば、SSL証明書はwww.example.comと表示しますが、example.com(「www」がない)とは表示しません。この状況が起きるのは、SSL証明書のSubject Alternative Name(SAN)セクションの情報が正しく入力されていないためです。その結果、Webサイトには機能しているSSL証明はあるものの、ユーザーが入力したURLと証明書に記載されているものが一致しないことになります。したがって、ブラウザーは証明書が無効だとみなすのです。

Webサーバーが間違ったWebサイトのSSL証明書を提示した。この状況が発生するのは、複数のWebサイトが1つのIPアドレスでホストされたときです。それぞれのWebサイトは独自のSSL証明書を持つため、クライアントデバイスがいずれか1つのWebサイトに安全に接続しようとすると、サーバーはどのSSL証明書を提示すべきかわかりません。たとえるなら、郵便物をマンションに配達するときに、住所に部屋番号がないために配達できないという状況です。TLSの拡張仕様であるSNIがこのエラーの防止に役立ちます。

ほかの考えられる原因:

  • 証明書が自己署名されている。つまり、サードパーティの認証局ではなくWebサイトのオペレーターによって生成されている
  • 証明書を発行した認証局をブラウザーが認識しない
  • SymantecがSSL証明書を発行しました(Symantecが発行したすべてのSSL証明書は主要なブラウザーによって信頼されていません)
  • SSL証明書にサポートされていない機能がある可能性があります(SHA-256ではなくSHA-1ハッシュを使用している)
  • クライアントデバイスのクロックが不正確であるため、SSL証明書の有効期限が切れているかどうかを確認できない

SSL証明書のエラーを修復する方法

ユーザーの場合

ページを更新する:ネットワーク接続には、ほとんどの場合ユーザーが気付かずに行われるクライアントとサーバー間の多くのやり取りが伴います。こうしたやり取りの多くは正しく行われないことがあります。そのため、ページを再試行したり再読み込みすることで、さまざまなエラーを解消できる場合があります。

ブラウザーのキャッシュをクリアする:ブラウザーは、過去にユーザーが閲覧した情報やコンテンツのいくつかを「キャッシュ」と呼ばれる一時的な保管場所に保存します。ブラウザーのキャッシュをクリアして、ページの再読み込みを試みることで、ページを更新するのと同じ効果が得られます。ブラウザーの観点から見ると、Webサイトはまっさらな状態になったので、ブラウザーは適切な接続の確立を再度試みることができます。あるいは、ユーザーは、シークレットモード(Chrome)、プライベートモード(FirefoxおよびSafari)、またはInPrivateモード(Edge)でページを開くこともできます。こうしたモードでは、ブラウザーはキャッシュにアクセスしません。

クロックをリセットする:ユーザーはコンピューターのクロックをリセットすることもできます。クロックが不正確であると、期限切れまたは無効としてデバイスがSSL証明書を拒否する可能性があります。

「www」を追加する:SANエラーを回避するために、ユーザーは「www」(またはドメインの接頭辞)を含めるためにドメイン名を再入力することができます。

別のブラウザーを使用する、またはブラウザーをアップデートする:古いバージョンのブラウザーはTLS暗号(SNIなど)の必要な機能をサポートしていない可能性があります。最新バージョンのブラウザーを使用するようにしてください。

Webサイトの所有者の場合

新しいSSL証明書を取得する:有効期限が切れている場合、内容が古くなっている場合、または自己署名されている場合、Webサイトは認証局から新しい証明書を取得する必要があります。(CloudflareはEnterpriseプランのお客様に無料のSSL証明書ならびにカスタマイズした証明書を提供します)。

SANが入力されていて、サブドメインが含まれていることを確認する:SSL証明書が有効である場合、ドメイン上のすべての正当なバリエーションが列挙されていることを確認します。また、www.example.comに加えてサブドメインblog.example.comが列挙されているはずです。

HTTPS化をしていないWebサイトの場合、すべてのバックリンクをHTTPのみにする:WebサイトがHTTPのみを使用する場合にユーザーが誤ってHTTPS経由でURLを読み込もうとすると、エラーが表示されることがあります。なぜなら、ブラウザーが存在しないWebサイトのSSL証明書を取得しようとするからです。バックリンクを修復することに加えて、誰かがHTTPS経由で読み込もうとした場合にHTTPにリダイレクトするようWebサイトを設定する必要があります。また、そうしたWebサイトについては、SSL証明書を取得することを強く推奨します。

「接続は安全ではありません」というエラーはどういう意味か?

Chromeでは、このメッセージはHTTPサイトの閲覧時にアドレスバーの「Not Secure(安全でない)」をクリックすると表示されます。これは、WebサイトにSSL証明書が設定されていなくて、サイトとの間のトラフィックの暗号化にSSL/TLSを使用していないことを意味します。通常、ブラウザーは、HTTPS化をしていないWebサイトをブロックしませんが、ユーザーはログイン認証情報、クレジットカード情報、政府発行のID番号などをHTTPS未対応のWebサイトに入力しないようにしてください。

Cloudflareはどのようにこうしたエラーの防止を支援するか?

Cloudflareは、Universal SSLを使用するすべてのWebサイトに無償のSSL/TLS暗号を提供します。CloudflareのTLS暗号を使用するWebサイトでは、こうしたエラーのほとんどが発生しませんが、クライアントデバイスが適切に設定されていないとエラーが表示されることがたまにあります。Cloudflareが提供する無償のSSL証明書の詳細については、こちらをご覧くださいCloudflare診断センターでSSL/TLSエラーがないかテストできます。