ERR_CONNECTION_CLOSED とは?原因と解決方法

Advertisement
ERR_CONNECTION_CLOSED とは?
ERR_CONNECTION_CLOSED は、Chrome や Edge で 「このサイトにアクセスできません。example.com によって接続が切断されました。」 と表示されるエラーです。Chromium ではネットエラー -100 にあたり、「接続が閉じられた(TCP FIN に相当)」と定義されています。
FIN は TCP 接続を終了する丁寧な方法です。リセットとは正反対で、何かがクラッシュしたり強制終了されたりしたわけではなく、一方が単に「終わりです」と言って接続を切っただけです。問題はタイミングにあります。相手側がブラウザがページを受け取る前に接続を切ったため、表示するものがなかったのです。
何かが、あなたの接続を早めに終わらせることを選んだのです。それはウェブサイトのサーバー、その手前にある CDN、あなたのネットワーク上のフィルター、あるいはあなた自身のコンピューター上のソフトウェアの可能性があります。以下の解決策で、どれが原因かを突き止められます。
接続が切られる場所:多くは HTTPS ハンドシェイク
どこを調べればよいかは、Chromium のネットワークコードが教えてくれます。TLS(HTTPS)ハンドシェイクの途中で接続が終了すると、暗号化レイヤーがその終了を ERR_CONNECTION_CLOSED に変換します。一方、新しい接続でリクエストが届いた後にサーバーが応答せずに接続を閉じた場合、Chrome は代わりに ERR_EMPTY_RESPONSE を報告します。
また Chrome は、再利用していた古い接続が途中で閉じられた場合、自動的にリクエストを再試行するため、それが原因でこのエラーが表示されることはまれです。その結果、HTTPS サイトで ERR_CONNECTION_CLOSED のページが表示された場合、通常は安全な接続を確立している最中に何かが接続を切ったことを意味します。つまり、経路上で TLS を扱っているもの、すなわちウイルス対策ソフトの HTTPS スキャナー、VPN やプロキシ、ネットワーク上のフィルタリング装置、サイトの CDN、ウェブサーバーの TLS 設定のいずれかを示しています。
Advertisement
ERR_CONNECTION_CLOSED の原因
| 原因 | どちら側か | 手がかり |
|---|---|---|
| VPN やプロキシが接続を終了している | あなた | すべての HTTPS サイトが失敗する、または VPN オン時だけ失敗する |
| ウイルス対策ソフトの HTTPS スキャン | あなた | 別のブラウザプロファイルや、ウェブ保護を一時停止すると表示される |
| ネットワークのフィルターがドメインをブロック(学校、職場、ISP) | ネットワーク | 特定のネットワークで1つのサイトだけ失敗する |
| サーバーにそのホスト名(SNI)用の証明書がない | ウェブサイト | 全員が失敗する。www ありだけ、または www なしだけで起こることが多い |
| サーバーの古い、または厳しすぎる TLS 設定 | ウェブサイト | 一部のブラウザやデバイスでだけ失敗する |
| サーバーや CDN の接続数制限、DDoS 対策 | ウェブサイト | 高負荷時や特定の国からのアクセスで失敗する |
| ネットワーク設定の破損 | あなた | 1台のデバイスでだけ複数のサイトが失敗する |
解決策1:別のネットワークで試して原因を突き止める
スマートフォンでモバイルデータ通信(Wi-Fi はオフ)を使ってページを開くか、別のネットワークにある別のコンピューターで開いてみてください。
他の環境では表示される: 接続を切っているのは、あなたのデバイスかネットワークです。解決策2〜6に進んでください。
どこでも失敗する: ウェブサイトのサーバーか CDN が接続を切っています。解決できるのは管理者だけです。あなた自身のサイトなら、下のウェブサイト管理者向けのセクションに進んでください。
外部から証明書を確認する: DNS Robot の SSL チェッカー は当社のサーバーからサイトに接続し、HTTPS ハンドシェイクが成功するか、どの証明書が提供されているかを表示します。
Advertisement
解決策2:VPN とプロキシをオフにする
VPN サーバーやプロキシは、あなたが行うすべての接続を処理しており、過負荷やブロックの状態にあると、ハンドシェイクの段階で接続を終了することがよくあります。VPN を完全に切断してから、プロキシを確認してください:
Windows 11: 設定 → ネットワークとインターネット → プロキシ → 「手動プロキシ セットアップ」で プロキシ サーバーを使う をオフにします。
macOS: システム設定 → ネットワーク → 使用中の接続 → 詳細… → プロキシ → すべてオフにします。
VPN やプロキシとして動作するブラウザ拡張機能も同様です。拡張機能が既定でオフになるシークレットウィンドウでテストしてください。
解決策3:ウイルス対策ソフトの HTTPS スキャンを一時停止する
暗号化された通信を検査するセキュリティスイートは、すべての HTTPS ハンドシェイクの中間に入ります。新しい TLS 機能や珍しい証明書などが原因でスキャナーがサイトとうまくネゴシエートできないと、単に接続を閉じてしまうことがよくあります。
HTTPS スキャン、ウェブシールド、SSL/TLS プロトコルフィルタリング、暗号化された接続のスキャン といった名前の設定を探し、その機能だけをオフにして再読み込みします。ページが表示されたら、そのサイトを除外に追加してスキャンをオンに戻してください。ウイルス対策ソフトを更新すると、恒久的に解決することもよくあります。
Advertisement
解決策4:DNS を変更してフィルタリングの可能性を排除する
一部の ISP やネットワークフィルターは、ドメインを自社のサーバーに向けることでサイトをブロックしており、そのサーバーは処理できない HTTPS 接続を切ってしまいます。DNS Robot の DNS Lookup が返すサイトの IP アドレスが、あなたのコンピューターが返すもの(nslookup example.com)と異なる場合、リゾルバーがあなたを別の場所へ誘導しています。
Cloudflare(1.1.1.1)、Google(8.8.8.8)、Quad9(9.9.9.9)などのパブリックリゾルバーに切り替え、DNS キャッシュをフラッシュしてから、もう一度試してください。ネットワークが暗号化 DNS もブロックしている場合は、「このネットワークは暗号化された DNS トラフィックをブロックしています」の解説をご覧ください。
解決策5:SSL 状態、ソケットプール、ブラウザデータを削除する
Chrome のソケットプール:
chrome://net-internals/#socketsを開いて Flush socket pools をクリックし、古くなっている可能性のある接続を Chrome が再利用しないようにします。Windows の SSL 状態: Win + R を押して
inetcpl.cplと入力し、コンテンツ タブを開いて SSL 状態のクリア をクリックします。サイトのデータ: アドレスバー左端のアイコン → サイトの設定 → データを削除 をクリックし、そのサイトの Cookie やキャッシュデータをリセットします。
ブラウザを更新する:
chrome://settings/helpを開きます。古いビルドは、新しい TLS 機能を使うサーバーとのハンドシェイクに失敗することがあります。
Advertisement
解決策6:ネットワークスタックをリセットしてルーターを再起動する
1台のデバイスでだけ複数のサイトが失敗する場合は、そのデバイスのネットワーク設定をリセットします。ルーターも再起動して、接続テーブルをクリアしましょう。Windows では、管理者権限のコマンド プロンプトで次を実行してから再起動します:
netsh winsock reset
netsh int ip reset
ipconfig /release
ipconfig /renew
ipconfig /flushdnsWindows 11 には、設定 → ネットワークとインターネット → ネットワークの詳細設定 → ネットワーク リセット もあり、ネットワークアダプターを再インストールできます。Mac では、システム設定 → Wi-Fi でネットワークを削除し、もう一度接続してください。
Android と iPhone で ERR_CONNECTION_CLOSED を解決する
ネットワークを切り替える: Wi-Fi からモバイルデータ通信へ、またはその逆に切り替えて、ネットワークのフィルターが関係しているかを確認します。
VPN、広告ブロック、「セキュリティ」系のアプリをオフにする。 その多くは、ローカル VPN 経由で通信をルーティングして検査しています。
Android のプライベート DNS: 設定 → ネットワークとインターネット → プライベート DNS → 自動。各オプションの意味は プライベート DNS ガイド をご覧ください。
Chrome や Safari を更新する。 アプリストアから更新し、OS が数バージョン遅れている場合は OS も更新してください。
ネットワーク設定をリセットする: iPhone では、設定 → 一般 → 転送または iPhone をリセット → リセット → ネットワーク設定をリセット。Android では、設定 → システム → リセット オプション → Bluetooth と Wi-Fi をリセット(モバイルデータ通信も失敗する場合は モバイル ネットワーク設定をリセット も実行)。
ウェブサイト管理者向け:サーバーが接続を切る理由
さまざまなネットワークの訪問者に ERR_CONNECTION_CLOSED が表示される場合は、ネットワーク外のマシンから自分で TLS ハンドシェイクをテストしてください。openssl s_client を使えば、どこで止まるかが正確にわかります:
SNI と証明書: 訪問者が使うすべてのホスト名(
example.comとwww.example.comの両方)に、server_nameのエントリと、そのホスト名をカバーする証明書が必要です。証明書のないデフォルトのサーバーブロックに着地したホスト名は、ハンドシェイクを閉じられることがよくあります。プロトコル:
TLSv1.2とTLSv1.3を提供してください。TLS 1.0/1.1 しか提供しない非常に古い設定や、珍しい暗号スイートのリストは、現行のブラウザでは失敗します。SSL チェッカー で、訪問者が受け取る証明書とチェーンを確認できます。接続数の制限: nginx が
worker_connections are not enoughを記録している、あるいはファイアウォールのconnlimitや DDoS 対策のルールが発動している場合、高負荷時に新しい接続が破棄されたり閉じられたりします。制限を引き上げるか、トラフィックの発生源を突き止めてください。CDN と WAF: 影響を受けた訪問者について、CDN のセキュリティイベントを確認します。ボット対策やジオブロッキングのルールが、地域全体からの接続を閉じることがあります。
ログ: 報告があった時刻前後のウェブサーバーのエラーログで、
SSL_do_handshake() failedの行を探します。nginx はクライアント側のハンドシェイク失敗の大半をinfoレベルで記録するため、既定のerrorレベルでは何も表示されないことがあります。調査中は一時的にerror_log /var/log/nginx/error.log info;を設定してください。
# SNI 付きの完全なハンドシェイク(訪問者が使うホスト名で)
openssl s_client -connect example.com:443 -servername example.com </dev/null
# 正常:証明書チェーン、"Verify return code: 0 (ok)"、TLSv1.3 または TLSv1.2 の Protocol 行
# 異常:"unexpected eof while reading" または "no peer certificate available"
# = サーバー(またはその手前の何か)がハンドシェイクを閉じた
# 特定のプロトコルバージョンをテスト
openssl s_client -connect example.com:443 -servername example.com -tls1_2 </dev/null続いて、次の項目を順に確認します:
ERR_CONNECTION_CLOSED・RESET・EMPTY_RESPONSE・SSL エラーの違い
| エラー | コード | 何が起きたか |
|---|---|---|
| ERR_CONNECTION_CLOSED | -100 | ページが届く前の通常の終了(FIN)。多くは HTTPS ハンドシェイク中 |
| ERR_CONNECTION_RESET | -101 | 開いている接続の突然の切断(RST) |
| ERR_EMPTY_RESPONSE | -324 | リクエストを送信した後、0 バイトのまま接続が閉じられた |
| ERR_SSL_PROTOCOL_ERROR | -107 | TLS ハンドシェイクがプロトコルの規則に違反した |
| ERR_SSL_VERSION_OR_CIPHER_MISMATCH | -113 | 共通の TLS バージョンや暗号スイートがない |
関連ガイド:ERR_CONNECTION_RESET、ERR_SSL_PROTOCOL_ERROR、ERR_SSL_VERSION_OR_CIPHER_MISMATCH、ERR_CONNECTION_REFUSED。
外部からサイトの HTTPS ハンドシェイクは成功しますか?
DNS Robot の無料 SSL チェッカーは、当社のサーバーから任意のドメインに接続し、証明書、チェーン、有効期限を表示します。こちらからは接続できるのにあなたの環境では接続が切られる場合、問題はあなたの側にあります。
試す SSL チェッカーAdvertisement
よくある質問
サーバー、またはあなたとサーバーの間にある何かが、ブラウザがページを受け取る前に、通常の TCP 終了(FIN)で接続を終わらせたという意味です。Chromium ではネットエラー -100 にあたります。HTTPS サイトでは、通常 TLS ハンドシェイク中に発生します。