まずエラーコードを記録し、影響範囲を切り分ける

FlClashを有効にした後、「この接続ではプライバシーが保護されません」と表示される場合、HTTPS接続先の認証に問題があります。まずエラーコード、対象ドメイン、証明書の詳細を確認しましょう。ページを何度も再読み込みしても解決しません。ログイン、決済、メールの画面では、パスワードや確認コードを入力せず、エラー画面の情報を記録してください。

ブラウザのエラー画面で「詳細設定」を開き、エラーコードをすべて記録します。証明書を表示できる場合は、発行者、有効期間、サブジェクトの別名も記録してください。ブラウザによって表示場所は異なるため、エラー画面にある証明書情報を優先して確認しましょう。

よくあるエラー疑うべき原因まず確認する項目
NET::ERR_CERT_DATE_INVALID現在時刻が証明書の有効期間外端末の日付、時刻の同期、サイト証明書の有効期限
NET::ERR_CERT_COMMON_NAME_INVALID証明書の対象ドメインとアクセス先のドメインが一致しないアドレスの入力ミス、証明書のSAN、DNS、リダイレクト
NET::ERR_CERT_AUTHORITY_INVALID証明書チェーンを信頼されたルート証明書までたどれない発行者、サイト証明書チェーン、HTTPS検査ソフト
SSL_ERROR_BAD_CERT_DOMAINFirefoxがドメイン名の不一致を検出接続先ホストと証明書の対象範囲

次に、影響範囲を切り分けます。エラーが出るのは1つのサイトだけですか、それとも無関係な複数のHTTPSサイトでも発生しますか?特定のノードだけで起きますか、それともプロキシを無効にしても発生しますか?「ネットにつながるか」より、こうした違いのほうが原因特定に役立ちます。接続タイムアウト、接続リセット、証明書エラーはそれぞれ発生段階が異なるため、同じ方法で対処することはできません。

HTTPSのハンドシェイクとプロキシ:2種類の証明書を分けて確認

ブラウザがHTTPSサイトにアクセスすると、接続先サイトの証明書について、ドメイン名、有効期間、信頼チェーンを検証します。通常のHTTPプロキシ経由でHTTPSサイトに接続する場合、ブラウザはまずCONNECTでトンネルを確立し、その後サイトとTLSハンドシェイクを行います。SOCKSプロキシやTUNも、この暗号化通信を中継できます。通常の通信中継だけなら、ブラウザに専用のルート証明書をインストールする必要はありません。

ノードのプロトコル自体にTLSを使用している場合は、「クライアントからプロキシノードまで」の証明書検証も加わります。このとき、mihomoのログにある x509: certificate has expired or is not yet valid や certificate signed by unknown authority は、ノードの証明書を示している可能性があります。一方、ブラウザのエラー画面に表示される証明書は、通常、アクセス中のサイトのものです。2つの接続を分けて原因を特定してください。

  • ブラウザに証明書警告が表示される:接続先のドメイン、発行者、端末の時刻、信頼ストアを確認します。
  • クライアントのログにノードのTLSエラーが記録される:ノードのサーバー名、設定パラメーター、証明書の状態を確認し、提供元に問い合わせます。
  • プロキシ接続エラーやタイムアウトが表示される:まずローカルの待ち受けポート、ノードへの接続、ルーティングを確認します。サイト証明書が原因だと決めつけないでください。

システム時刻のずれ:日付を直し、自動同期を有効にする

証明書には有効期間が定められています。端末の日付がその期間外だと、サイトの設定に問題がなくても証明書検証に失敗します。デュアルブート、長期間の電源オフ、マザーボードの電池切れなどで、システム時刻がずれることがあります。信頼できる時刻と照らし合わせ、年、日付、分を確認してからタイムゾーンも確認してください。

  1. Windows 11:「設定」→「時刻と言語」→「日付と時刻」を開き、「時刻を自動的に設定する」をオンにします。「追加の設定」で「今すぐ同期」を選択してください。
  2. macOS:「システム設定」→「一般」→「日付と時刻」を開き、日付と時刻の自動設定を確認します。変更には管理者の認証が必要な場合があります。
  3. Android:システム設定で「日付と時刻」を検索し、自動日時設定と自動タイムゾーンを有効にします。メーカーによってメニューの構成は異なります。
  4. 同期が完了したら、エラーが発生したタブを閉じ、同じドメインに再アクセスして証明書の有効期間を確認します。

タイムゾーンは時刻の表示方法に影響しますが、証明書の有効性は実際の時刻で判定されます。タイムゾーンだけを正しくしてシステム時計がずれたままでは、問題が続くことがあります。時刻が正しいのに特定のサイトだけ期限切れと表示される場合は、サイトの管理者に証明書の更新を依頼してください。プロキシノードを切り替えても、期限切れの証明書は有効になりません。

中間者証明書:発行者と端末のHTTPS検査を確認

企業のゲートウェイ、一部のセキュリティソフト、デバッグ用プロキシは、HTTPS通信を復号して検査することがあります。ブラウザに再発行した証明書を提示し、代わりに接続先サイトへ接続する仕組みです。該当するルート証明書が信頼されていない、期限切れになっている、またはソフトの設定が残っていると、発行元を信頼できないという警告が表示される場合があります。

同じドメインで3つの条件を比較する

  • エラーが出る端末と、正常に表示できる別の端末で証明書の発行者を比較します。CDNや証明書の更新により内容が異なることはありますが、企業のゲートウェイ、セキュリティソフト、デバッグツールの名前があれば重点的に確認してください。
  • 同じ端末で2種類のブラウザを比較します。ブラウザによって信頼ストアの使い方が異なるため、片方だけでエラーが出る場合は、そのブラウザの証明書設定、拡張機能、管理ポリシーを確認してください。
  • 許可されている場合は、スマートフォンのテザリングに切り替えてテストします。会社のネットワークでのみ発生する場合は、ネットワーク管理者に検査ポリシーと証明書の配布状況を確認してもらってください。

Windowsでは certmgr.msc を実行すると現在のユーザーの証明書ストアを、certlm.msc を実行するとローカルコンピューターの証明書ストアを確認できます。「信頼されたルート証明機関」を重点的に確認し、見覚えのない名前の証明書を一括削除しないでください。macOSでは「キーチェーンアクセス」で関連する証明書と信頼設定を確認できます。管理対象端末の証明書は、組織の手順に従ってください。

パケット解析ツールやデバッグプロキシをインストールしたことがある場合は、ツールを終了し、システムプロキシがそのツールを指したままになっていないか確認してください。ブラウザ拡張機能のプロキシとシステムプロキシが同時に有効だと、異なる経路で接続することがあります。一度に変更する項目は1つだけにし、テスト結果を記録してください。証明書の削除、ブラウザのリセット、設定変更を同時に行うと、原因を特定しにくくなります。

ドメイン名の不一致:DNS、認証ポータル、ルール設定を確認

DNSに問題があると、ドメイン名が誤ったサーバーを指すことがあります。ただし、DNSの異常が必ず証明書警告として表示されるわけではなく、単なるタイムアウトになる場合もあります。ドメイン名の不一致が表示されたら、まずアドレスバーの入力ミスを確認し、証明書のサブジェクト代替名(SAN)が現在のホスト名をカバーしているか調べてください。証明書が example.com をカバーしていても、すべてのサブドメインが対象とは限りません。

公衆Wi-Fiでは先にネットワーク認証を完了する

ホテル、空港、大学などのネットワークでは、認証ポータルでのログインが必要な場合があります。OSの「ネットワークにログイン」通知から認証ページを開き、接続先のネットワークを確認して認証を済ませてからHTTPS接続をテストしてください。銀行やメールの証明書エラー画面に、公衆Wi-Fiのアカウント情報を入力しないでください。認証ポータルと接続先サイトを区別することが大切です。

システムDNSとプロキシのDNSを分けて確認

Windowsでは次のコマンドで、システムの名前解決結果を確認できます。このコマンドで確認できるのは該当する経路のみで、ブラウザのセキュアDNSやmihomoのDNS結果と一致するとは限りません。

nslookup example.com
ipconfig /flushdns

2つ目のコマンドは、WindowsのシステムDNSキャッシュを消去します。ブラウザ、上流のリゾルバー、mihomo内部のキャッシュは自動では消去されません。Fake-IPを使用する設定では、割り当てられたIPアドレスが表示されても、DNS汚染を意味するわけではありません。mihomoでよく使われるFake-IPアドレス範囲は 198.18.0.0/16 ですが、実際の設定を確認してください。

FlClashの接続ログでエラーが出たドメインを検索し、適用されたルールと実際の出力先を確認します。ルールモードでは設定に応じて直結またはプロキシを選択します。グローバルモードに切り替えても出力先が変わるだけで、システム時刻や信頼ストアの問題は解決しません。ブラウザでセキュアDNSが有効になっている場合は、その状態も記録してください。システムDNSを変更しただけで、すべての名前解決経路が変わったと判断しないようにしましょう。

ノードとTUNの切り分け:変更する項目は一度に1つ

「ノードを切り替えたら直った」ことだけでは、その経路に関連する問題だと分かるにすぎません。元のノードで誤った名前解決、出口でのリダイレクト、接続異常がなかったか、さらに確認が必要です。正常なエンドツーエンドのHTTPS接続では、ブラウザがサイトの正当性を検証します。見覚えのない証明書が表示された場合は情報を記録し、その経路の利用を中断してください。

  1. 現在の出力モード、選択中のノード、システムプロキシとTUNの状態、エラーが出たドメイン、エラーコードを記録します。
  2. ノードは変えずにTUNだけを無効にし、設定済みのシステムプロキシ経由でブラウザをテストします。リクエストが引き続きクライアントを経由しているか確認してください。
  3. 元の設定に戻し、ノードだけを1つ切り替えて同じドメインにアクセスします。エラーコードと証明書の発行者を比較してください。
  4. ネットワークで直結が許可され、利用条件にも反しない場合は、システムプロキシとTUNを無効にして比較テストを行います。ブラウザ拡張機能やコマンドラインの環境変数がプロキシを指定している場合もあるため、あわせて確認してください。
  5. クライアントログの時刻と照らし合わせ、ノードへのTLS接続中に失敗したのか、サイトへのアクセス中に失敗したのかを判断します。

ポートを指定してHTTPプロキシをテストする

以下では、ローカルのHTTPまたは混合ポート 7890 を例にします。まず現在のクライアント設定で実際のポート番号を確認し、コマンド内の番号を置き換えてください。この値は例であり、すべてのFlClash設定での既定値ではありません。Windowsでは古いPowerShellのコマンドエイリアスとの違いを避けるため curl.exe を、macOSまたはLinuxでは curl を使用します。

curl.exe --noproxy "*" -Iv --connect-timeout 10 https://example.com/
curl.exe --noproxy "" -x http://127.0.0.1:7890 -Iv --connect-timeout 10 https://example.com/

1つ目のコマンドはcurlに明示されたプロキシ設定を無視させ、2つ目はローカルのHTTPプロキシを明示的に指定します。どちらのコマンドも証明書検証を有効にし、接続タイムアウトを10秒に設定しています。TUNが有効な場合、1つ目の通信も引き続きTUNに取り込まれることがあるため、--noproxy だけを根拠に完全な直結と判断しないでください。SOCKS専用ポートをHTTPプロキシのアドレスに指定することもできません。

curlとブラウザでは、証明書を処理するバックエンドや信頼ストアが異なる場合があります。そのため、コマンドが成功してもブラウザの問題が解決したとは限らず、比較材料の1つにすぎません。詳細な出力を共有する前に、プロキシの認証情報、Cookie、サブスクリプションURLなどの機密情報を削除してください。

解決確認:証明書を検証し、通常の設定に戻す

設定を変更したら、最初にエラーが出たドメインと、互いに関係のないよく使うHTTPSサイト2つに再アクセスします。ページが正常に読み込まれるか、エラーコードが消えたか、証明書の有効期間とドメイン名が一致しているか確認してください。その後、普段使用しているルールモード、システムプロキシ、TUNの設定に戻し、もう一度テストします。

  • 特定のサイトだけでエラーが続く:ドメイン、エラーコード、証明書の有効期間、テスト時刻をサイトの管理者に伝えてください。
  • 特定のノードだけでエラーが続く:ノード名、発生時刻、機密情報を伏せたログをサブスクリプションの提供元に伝えてください。サブスクリプションURLは公開しないでください。
  • 会社のネットワークまたは管理対象端末だけでエラーが出る:管理者にルート証明書の配布、ゲートウェイの時刻、HTTPS検査ポリシーを確認してもらってください。
  • すべてのネットワークでエラーが出る:端末の時刻、システムアップデート、ブラウザの信頼ストア、端末上のセキュリティソフトを引き続き確認してください。

証明書エラーへの対処では、警告を隠すのではなく、検証可能な接続を回復することが重要です。クライアントの通信経路を改めて確認する場合はクイックスタートガイドをご覧ください。サブスクリプションや接続の基本についてはよくある質問とトラブル対処をご確認ください。