SSL証明書のエラーとその修正方法

WebサイトのSSL証明書の有効期限が切れている場合または正しくない場合、WebユーザーはWebサイトの読み込みを思いとどまる可能性があります。

学習目的

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

  • SSL(TLS)とは何か、どんな機能があるのかを理解する
  • 一般的なSSLエラーを挙げる
  • エラーの対処法を理解する

記事のリンクをコピーする

SSL証明書のエラーとその修正方法

Secure Sockets Layer(SSL)は、インターネット上のクライアントとサーバー間を移動するデータを暗号化し、認証するためのプロトコルです。プロトコルの更新バージョンは、Transport Layer Security(TLS)と呼ばれます。

SSL/TLSは、SSL証明書の使用に依存します。SSL証明書は、Webサーバー上でホストされるデータファイルで、トラフィックを暗号化し、サーバーのIDを確認するのに役立ちます。サーバーとクライアント(サーバー上でホストされているWebサイトにアクセスしようとする人が使用するデバイス)は、SSL証明書を使用して対称暗号化鍵を確立し、安全な暗号化された送信を開始します。これはすべて数ミリ秒で完了します。ユーザーとサーバーの間を移動するデータを暗号化することで、データ漏えいを防ぎ、Webサイトがユーザーの信頼を維持し、コンプライアンス要件を満たせるようにします。

SSLエラーとは?

SSL/TLS証明書の問題は、ユーザーがWebサイトやアプリケーションを安全に読み込めたり、アクセスしたりするのを妨げる可能性があります。以下に、ユーザーやWebサイト管理者が遭遇する可能性のある一般的なSSL証明書のエラー(またはTLSエラー)をいくつか示します。

SSL証明書が信頼されていません

ほとんどのSSL証明書は、認証局と呼ばれる外部組織によって発行され、署名が行われます。自己署名証明書は、多くの場合ブラウザから信頼されません。これは、外部機関が証明書を検証していないためです。また、認証局がブラウザに認識されない理由もあります。たとえば、Symantecが発行したSSL証明書は、主要なブラウザから信頼されなくなっています。このSSL証明書のエラーにより、ブラウザに「接続はプライベートではありません」というメッセージが表示され、ユーザーがWebサイトにアクセスできなくなる可能性があります。

より広くサポートされている認証局からSSL証明書を取得することで、このエラーを修正できる可能性があります(たとえば、Cloudflareは、すべてのブラウザから信頼されているSSL証明書を無料で提供しています)。

TLSのバージョンが間違っている

インターネットコミュニティは、脆弱性を修正し、認証プロセスを高速化するために、長年にわたってSSL/TLSプロトコルを何度も更新してきました。SSLからTLSへの名前変更は、これを反映しています。

多くのWebサービスは、最新のプロトコルの使用を強制し始めています。TLSの最も最新で広く使われているバージョンはTLS 1.3で、TLS 1.2も引き続き使用されています。

最も安全なプロトコルのみを受け入れるように設定されているWebホストおよびWebサイトの場合、クライアントは最低でもTLS 1.2をサポートしなければなりません。そうでない場合、TLSハンドシェイクは計画通りに行うことができません(「TLSクライアント認証情報の作成中に重大なエラーが発生しました」というエラーが発生することがあります)。ユーザーは、このSSL証明書エラーを回避するために、ブラウザーとデバイスのオペレーティングシステムがTLSの最新かつ最も安全なバージョンをサポートしていることを確認する必要があります。

SSL証明書の期限切れ

パスポートのような政府発行の本人確認書類が一定年数後に失効するのと同様に、SSL証明書も定期的に更新する必要があります。これにより、パスポートの写真を更新することが本人確認に役立つように、同じ組織が問題のWebサービスを引き続き運営していることが保証されます。期限切れのSSL証明書はクライアントのWebブラウザから信頼されないため、TLSハンドシェイクを続行することができず、安全な接続を確立することはできません。

このSSLの問題を解決するには、Web管理者がSSL証明書がすべてのドメインとサブドメインで最新のものであることを確認する必要があります。

このエラーは、クライアントのクロックが正しくない場合にも発生することがあります。そのような場合、クライアントのブラウザはSSL証明書の有効期限が切れているかどうかを確認できないことがあります。その場合、クライアントデバイスのクロックをリセットするとエラーが修正されます。

SSLコモンネームの不一致エラー

SSL証明書の名前が、クライアントが入力したURLと一致しない場合に、名前の不一致エラーが発生します。この状況が発生するのは、ユーザーが異なるトップレベルドメインを入力した場合、その名前が証明書に記載されていないのに「www」を入力した場合、または何らかの方法でドメインのスペルミスをした場合です。名前の不一致は、Webサイトの運営者が証明書のラベルを誤った場合や、公開されているドメイン名をすべて含めなかった場合にも発生することがあります。最後に、クライアントまたはサーバーのいずれかがSNI拡張子をサポートしていない場合に、コモンネームの不一致エラーが発生する可能性があります(詳細は後述)。

このエラーを回避するために、Webサイト管理者はSSL証明書でドメインスペルが正しいことを確認する必要があります。さらに、SSL証明書のSubject Alternative Name(SAN)セクションに、ドメイン名の正当な代替表現をすべて列挙する必要があります。

ホストサーバーがSNIを使用しない

Server Name Indication(SNI)は、1台のサーバーで複数のドメインがホストされている場合に使用するTLSプロトコルの拡張機能です。クライアントが接続を開始する時、クライアントはサーバー(IPアドレスで示される)に直接接続します。そのサーバーは、複数の住人がいるアパートのようなもので、複数のWebサイトをホストしている可能性があります。

SNIは拡張機能で、先ほどの例を使うと、アドレスにアパート番号を付け加えて、サーバーがSSL接続のリクエストをどのWebサイトまたは「アパート」に向けたかを知ることができます。しかし、サーバーへのリクエストがSNIを使用しない場合、サーバーは接続を開始するクライアントに間違ったSSL証明書を表示する可能性があり、その結果としてコモンネームの不一致エラーが発生します。

このエラーを回避するために、Webサイトの管理者は、SNI(および暗号化されたSNI)などの最新のTLSプロトコルをサポートするWebホストを使用する必要があります。

CloudflareがSSL証明書エラーを排除する仕組み

Cloudflareはすべてのお客様のWebサイトの証明書の自動管理・更新を行うことにより、Webサイト運営者がこうしたエラーを回避できるよう支援します。数十、数百、数百万ものサブドメインを管理する場合、証明書の有効期限が切れていないことを確認するのは、フルタイムの仕事になる可能性があります。しかし、Cloudflareはこのプロセスを自動化します。

Cloudflare SSL証明書オプションについては、「プラン」ページをご覧ください。