HTTPS(HyperText Transfer Protocol Secure)でサイトを読み込むのは、サイバーセキュリティにおける重要なベストプラクティス。しかし、SSL証明書を適切にインストールしなければ、「NET::ERR_CERT_COMMON_NAME_INVALID」エラーのような問題が発生することがあります。
このエラーに遭遇する理由はさまざまですが、原因さえ絞り込むことができれば、解決は簡単です。
この記事では、「NET::ERR_CERT_COMMON_NAME_INVALID」エラーの意味を説明し、様々なブラウザでどのように見えるかの例を示します。そして、エラーを修正するために使用できるいくつかの方法を紹介します。
「NET::ERR_CERT_COMMON_NAME_INVALID」エラーとは(要約)
「NET::ERR_CERT_COMMON_NAME_INVALID」エラーは、ブラウザがウェブサイトのSSL証明書を検証できず、安全な接続を確立できないと判断した場合に表示されます。このエラーは通常、サーバー上の証明書の設定に何らかの誤りがあることが原因で発生します。
エラーコード | NET::ERR_CERT_COMMON_NAME_INVALID |
エラーの種類 | SSL接続エラー |
エラーのバリエーション | この接続ではプライバシーが保護されません 警告: 潜在的なセキュリティリスクあり 接続はプライベートではありません |
エラーの原因 | 無効なSSL証明書 リダイレクト設定の誤り プロキシ設定の誤り ウイルス対策ソフトまたはブラウザ拡張機能の問題 オペレーティングシステムの問題 |
「NET::ERR_CERT_COMMON_NAME_INVALID」エラーの原因
「NET::ERR_CERT_COMMON_NAME_INVALID」のエラーメッセージに含まれる、「COMMON_NAME」(コモンネーム)は、SSL証明書がインストールされている書がインストールされているドメイン名を意味します。
たとえば、サイトのドメインが「mydomain.com」だとすると、SSL証明書のコモンネームは「mydomain.com」になります。つまり、エラーメッセージの背後にある根本的な問題は、SSL証明書のコモンネームが何らかの理由で有効でないことを意味します。
具体的には、証明書の名前がインストールされているドメインと一致していないというのが一般的ですが、他にも以下のような原因が考えられます。
- SSL証明書がドメインのwwwありとwwwなしの両方に対応していない
- SSL証明書をインストールせずにサイトをHTTPSにリダイレクトしようとした
- 自己署名証明書を使用しており、ブラウザが有効または安全であると認識していない
- ウイルス対策ソフトがSSL接続をブロックしている
- サイトのSSL接続をブラウザの拡張機能が妨害している
- プロキシの設定に誤りがある
- ブラウザのキャッシュまたはSSL状態が破損している
このように、「NET::ERR_CERT_COMMON_NAME_INVALID」エラーを引き起こす要因は多数あります。したがって、適切な解決策を特定するのには少し手間がかかるかもしれませんが、解決策自体はシンプルです。
「NET::ERR_CERT_COMMON_NAME_INVALID」エラーのバリエーション
「NET::ERR_CERT_COMMON_NAME_INVALID」エラーは、ブラウザによって見え方が異なります。以下、主要なウェブブラウザでの見え方をご紹介します。
Google Chrome
多くのHTTPSに関連するエラー同様、Google Chromeには「この接続ではプライバシーが保護されません」という警告が表示されます。
エラーを説明するメッセージの下には、エラーコード「NET::ERR_CERT_COMMON_NAME_INVALID」が表示されます。ユーザーは、安全でないHTTP接続で続行することができます。
このようなエラーメッセージは、安全でないことが一目で認識できるため、多くのユーザーを遠ざけます。
Mozilla Firefox
Firefoxでは、「警告: 潜在的なセキュリティリスクあり」というわかりやすいメッセージとともに、アクセスしようとしているサイトが適切に設定されていない旨を伝えます。
セキュリティ証明書が無効であり、リストされたドメイン名でのみ動作するように設定されていることを示す、より具体的なエラーメッセージが表示される場合もあります。
また、エラーコード「SSL_ERROR_BAD_CERT_DOMAIN」も表示されます。
Safari
Safariの場合は、「ページを開けません」のようなエラーメッセージが表示され、アクセスしようとしているドメイン名が表示されます。
また、サイトのSSL証明書が無効である、安全な接続を確立できなかったなどの詳細も表示されることがあります。
他のブラウザと比較すると、Safariのエラーメッセージは非常に曖昧です。
Safariでこのエラーに遭遇した場合は、SSLに関連する違う問題が発生している可能性もあるため、トラブルシューティングに少し時間がかかるかもしれません。
「NET::ERR_CERT_COMMON_NAME_INVALID」エラーの解決方法
先に触れたとおり、「NET::ERR_CERT_COMMON_NAME_INVALID」エラーには多くの原因が考えられ、解決策も多数あります。今回は、このエラーに効果的な9つの解決策をご紹介します。
1. SSL証明書が正しいことを確認する
「NET::ERR_CERT_COMMON_NAME_INVALID」エラーの基本となる原因は、サイトのドメインがSSL証明書に記載されているコモンネームと一致しないこと。したがって、まずは証明書を確認して、設定に誤りがないかどうかを確認しましょう。
今回は、例としてGoogle Chromeでの手順をご紹介しますが、他のブラウザでも同じような手順で確認することができます。
はじめに、アドレスバーの「保護されていない通信」をクリックします。表示されるウィンドウで「証明書」をクリックします。
すると、SSL証明書の情報を表示する小さなウィンドウが開きます。
このウィンドウに表示されるドメインが、アクセスしようとしているドメインと一致しなければなりません。異なる場合は、証明書の設定に誤りがあることがわかります。
これを解決するには、サイトから証明書を削除して新しい証明書をインストールするのが最善です。
ワイルドカードSSL証明書の検証
ワイルドカード対応のSSL証明書の場合は少し複雑になります。というのも、このタイプの証明書は、複数のサブドメインのデータを暗号化するように設計されているためです。
このため、1つのコモンネームが記載される代わりに「*.example.com」のようなサブドメインレベルが表示されます。ワイルドカード証明書がインストールされているサイトで「NET::ERR_CERT_COMMON_NAME_INVALID」エラーが表示される場合は、サブドメインに対応していない可能性があります。
ブラウザでSSL証明書を検証する際はこの点に注意してください。また、ワイルドカード証明書は1つのサブドメインレベルしか保護しないことも念頭に置いてください。たとえば、「*.example.com」と「*.subdomain.example.com」にはそれぞれSSL証明書が必要になります。
SAN(マルチドメイン)証明書の検証
SAN証明書は、同じサイトに紐付く複数のドメインのデータを暗号化します。これには、wwwあり/wwwなし、サブドメイン、トップレベルドメイン(TLD)が含まれます。
エラーが発生しているサイトにSAN証明書が導入されている場合は、証明書の検証により詳しい調査が必要になる可能性があります。
Chromeの場合は、先ほどの証明書ビューアで「詳細」タブを選択します。「証明書のフィールド」をスクロールして、「証明書のサブジェクトの代替名」を見つけます。これをクリックすると、「フィールド値」セクションにすべてのドメインが一覧表示されます。
2. リダイレクト設定を見直す
サイトをあるドメインから別のドメインにリダイレクトし、最初のドメインにSSL証明書を導入していない場合も、このエラーが発生することがあります。例えば、多くのSSL証明書はサイトのwwwありとwwwなしの両方に自動的に対応してくれることはありません。
例えば、「www.example.com」を「example.com」にリダイレクトするように設定したとします。SSL証明書を後者にインストールしていても、前者にインストールしていなければ、「NET::ERR_CERT_COMMON_NAME_INVALID」エラーが表示される可能性があります。
自分のサイトがこれに該当するかどうかがわからない場合は、Redirect Detectiveを使って確認することができます。
このツールで、サイトのwwwあり/wwwなし間、およびHTTP版とHTTPS版のリダイレクトをチェックすることができます。
リダイレクトがSSL証明書と干渉していることがわかれば、いくつか解決策を試すことができます。例えば、証明書のコモンネームをドメインの正しいバージョンに変更します。
あるいは、リダイレクト元のドメイン用に証明書を取得するか、両方のドメインに対応するSAN証明書を取得することもできます。ワイルドカードドメインの場合は、ドメイン間でリダイレクトするのではなく、暗号化するサブドメインごとにリストする必要があります。
3. WordPressで設定したアドレスが正しいかを確認する
特にWordPressでは、SSL証明書をインストールせずにサイトのアドレスを誤ってHTTPSに切り替えてしまうことがよくあります。セキュリティのベストプラクティスの実践や、単なる設定の変更によって、意図せず「NET::ERR_CERT_COMMON_NAME_INVALID」エラーを引き起こしてしまう可能性があります。
この場合の解決方法は非常にシンプルです。
WordPress管理画面で「設定」>「一般」に移動し、「WordPress アドレス (URL)」と「サイトアドレス (URL)」が一致していることを確認してください。
また、SSL証明書をインストールしていないにもかかわらず、HTTPSを使用している場合は、HTTPに変更してください。
この変更を行ってもエラーが解消されない場合は、phpMyAdminでデータベースのアドレスも変更する必要があるかもしれません。
これには通常、ご利用のホスティングアカウントからアクセスできます。左側サイドバーでサイト名をクリックしてデータベースを開き、wp_optionsテーブルを開きます。
「siteurl」と「home」の行を探して必要に応じてアドレスを編集し、サイトにアクセスできるかを確認します。
4. サイトが自己署名証明書を使用しているかどうかを確認する
Let’s Encryptのような信頼できる認証局からSSL証明書を取得している場合、証明書は認証局(CA)によって署名されています。自己署名証明書は、その名のとおり、ユーザーによって署名・作成されるものです。
自己署名証明書は、CAによって発行された証明書と比較して安全性に欠けています。無料で作成できるという利点はあるものの、たとえばLet’s Encryptでは正規のSSL証明書を無料で発行しています。内部サーバー用やlocalhost用を除いて、自己署名証明書を使用する理由はありません。
自己署名証明書は、正規の証明書のような完全な保護を提供していないことから、ブラウザに「安全ではない」と認識されてしまいます。これが、「NET::ERR_CERT_COMMON_NAME_INVALID」エラーを引き起こすことがあります。
証明書のCAを確認するには、先ほどの手順でアドレスバーから証明書の詳細を確認します。証明書ビューアの「発行元」に記載されています。
サイトが自己署名証明書をインストールしていることがわかった場合は、(開発者でない限り)サイトの開発者に連絡をとって証明書の削除を依頼し、正規の証明書をインストールするのが最善です。
自己署名証明書を意図的にインストールしている場合は、ブラウザでそれを認証してエラーを回避することもできますが、この手順はブラウザやOSによって大きく異なります。Let’s Encryptで証明書を取得してインストールする方が容易です。
5. SSL状態とブラウザキャッシュをクリアする
証明書の設定に問題がないにもかかわらず、まだエラーが解消されない場合は、SSL状態を削除する必要があるかもしれません。ブラウザは、読み込み時間短縮の目的でSSL証明書をキャッシュします。また、証明書をインストールしたばかりの場合は、問題なくてもエラーメッセージが表示されることがあります。
このプロセスはブラウザやOSによって異なります。今回は例としてGoogle Chromeでの手順をご紹介し、またWindowsとmacOSの両方でSSL状態を削除する方法を見ていきます。
Windowsでは、スタートアイコンをクリックし、「インターネット オプション」を開きます。「コンテンツ」タブを開いて「SSL 状態のクリア」をクリックします。
macOSでは、キーチェーンアクセスで同じ操作を行うことができます。Chromeのウィンドウ右上にある3つの点をクリックし、「設定」>「プライバシーとセキュリティ」>「セキュリティ」>「証明書の管理」をクリックします。
表示される「キーチェーンアクセス」ウィンドウでドメインの証明書を探して、右クリックして「(証明書名)を削除」を選択します。
削除を実行する際、ユーザーパスワードの入力が求められる場合があります。
キャッシュの破損が原因の場合は、これで「NET::ERR_CERT_COMMON_NAME_INVALID」エラーが解消されるはずです。
念のため、ブラウザキャッシュをクリアしてみてもいいかもしれません。Chromeの場合は、3つの点をクリックして「閲覧履歴データを削除…」を選択します。
表示されるウィンドウで「キャッシュされた画像とファイル」を必ず選択してください。
6. プロキシ設定を確認する
プロキシサーバーは、クライアントやオリジンサーバーの匿名性を保つためにウェブトラフィックをルーティングするために使用されます。プロキシ設定に誤りがあると、ウェブアクセスが制限され、SSLエラーなどのさまざまな問題が発生する可能性があります。
これを解決するには、プロキシ設定をリセットします。手順はWindowsとmacOSそれぞれ異なります。
どちらのOSを使用している場合でも、まずはChromeから「設定」>「システム」>「パソコンのプロキシ設定を開く」をクリックします。
Windowsの場合は、「インターネットプロパティ」ウィンドウが開きます。「接続」タブを選択して「LAN の設定」>「設定を自動的に検出する」にチェックを入れます。
macOSの場合は、「ネットワーク」ウィンドウが開きます。「自動プロキシ検出」のトグルスイッチをオンにします。
その後、エラーが表示されたサイトに再度アクセスし、エラーが消えているかを確認します。
7. ブラウザ拡張機能の競合を確認する
WordPressプラグインと同じように、ブラウザの拡張機能に問題がある可能性もゼロではありません。
競合が見られる場合は、サイトのHTTPS接続を妨げ、さまざまなエラーを引き起こします。
ブラウザの拡張機能が「NET::ERR_CERT_COMMON_NAME_INVALID」エラーの原因になっているかどうかを確認するには、サイトをシークレットウィンドウで開いていみます。
シークレットモードではインストールしている拡張機能が無効化されるため、これでサイトに問題なくアクセスできる場合は、ブラウザの拡張機能がエラーの原因になっている可能性があります。
この場合は、拡張機能を1つずつ無効にして、無効にするとエラーが解消される拡張機能を特定します。特定した後は、削除することで問題解決です。
8. ウイルス対策ソフトの設定を変更する
ウイルス対策ソフトがHTTPS接続を妨げている可能性もあります。お使いのコンピュータで使用している場合は、設定を確認し、HTTPSスキャンが無効になっていないかどうかを確認します。無効になっている場合は、有効にしてください。
これでもエラーが解消されない場合は、ソフトウェア自体を無効化してみてください。これで解消される場合は、ウイルス対策ソフトのカスタマーサポートに問題を報告し、対処法を確認します。
もちろん、ウイルス対策ソフトを長期間無効にするのは、セキュリティ上のリスクにつながります。サポートからの返答を待っている間は再度設定を有効にし、コンピュータの安全性を維持することをお勧めします。
9. ブラウザとOSを更新する
OSが古い場合、特定のウェブサイトにアクセスしようとするとエラーが発生することがあります。そのため、Windows、macOS、Linux、いずれも最新バージョンを使用することがベストプラクティスです。
現在使用しているブラウザが最新かどうかを確認するには、Chromeの場合、右上の3つの点をクリックし、「ヘルプ」>「Google Chromeについて」を選択します。
ここでブラウザのバージョンを確認し、自動更新をオンにすることができます:
Chromeのバージョンが最新でない場合は、この画面を開くと自動的にバージョンが更新されます。
まとめ
「NET::ERR_CERT_COMMON_NAME_INVALID」エラーに遭遇すると頭を抱えてしまいそうですが、エラーの原因を絞り込むことさえできれば、素早く問題を解決し、サイトの信頼性を保つことができます。
まずはブラウザでSSL証明書を確認し、リダイレクトの設定に誤りがないかを確認しましょう。それでも解決しない場合は、今回ご紹介したトラブルシューティングを実践してみてください。