2026年10月14日 · プロトコル解説 · 約8分

Trojanとは?Shadowrocketの設定方法:Password・SNI・Allow Insecure

TrojanとTLSの仕組み、Add ServerでAddress、Port、Password、Peer/SNI、Allow Insecureを設定する際の注意点を解説します。

この記事の要点

Trojanを設定する際は、接続先アドレス、認証用パスワード、TLSサーバー名を区別し、証明書検証を有効にしておきましょう。利用中のサービス情報をお持ちの方向けに、Add Serverの各項目を確認し、AddressとPeer/SNIが異なる場合がある理由や、タイムアウト・証明書エラー・認証失敗の切り分け方を説明します。

TrojanとTLS:接続を暗号化し、認証情報を確認する

ShadowrocketのTrojanは、プロキシプロトコルの選択肢の一つです。一般的なTrojan接続では、まずサーバーとTLS接続を確立し、その暗号化された通信路で認証情報とプロキシリクエストを送信します。TLSは通信の暗号化とサーバー認証を担い、PasswordはTrojanサーバーでの認証に使われます。両者は互いに代用できません。

WebサイトがHTTPSに対応していても、そのサーバーがTrojan接続を受け付けるとは限りません。利用する設定情報には、Trojanの種類、実際の接続先アドレス、ポート、パスワードが明記されている必要があります。ブラウザーで開けるドメインだけから、これらの設定を判断することはできません。以下の例は各項目の説明用で、接続に使えるサーバー情報ではありません。

443
TLSでよく使われるポートの例であり、Trojanの固定ポートではありません
1–65535
Portに設定できる値の範囲。サービス提供元が指定した値を入力
2つの段階
TLSのサーバー認証とTrojanのパスワード認証をそれぞれ確認

TypeでTrojanを選んだら、利用中の設定情報に特定の通信方式が指定されているかも確認します。WebSocketなどの追加パラメーターが含まれている場合は、実際の入力項目に一つずつ対応させてください。追加の通信設定が必要な情報を、アドレス・ポート・パスワードだけの基本設定として扱わないようにしましょう。

Add Serverの項目:AddressとSNIは別の設定

Addressは接続先を、Portはそのアドレス上の接続先サービスを指定します。Peer/SNIはTLSで使われるサーバー名に関する項目です。Shadowrocketの画面ではPeerと表示される場合があります。設定情報ではSNIやserver nameと記載されることがあるため、アプリの画面とサービス提供元の説明を照らし合わせてください。

項目入力する内容よくある間違い
TypeTrojanを選択します。別のプロトコル用の認証情報をTrojanの設定に流用することはできません。
Address利用中の設定情報に記載されたサーバーのドメイン名またはIPアドレス。共有リンク全体を入力したり、https://やパスを付けたりしないでください。
Portサーバーが実際に待ち受けているポート。設定情報に443と明記されている場合は、その値を入力します。TLSだからといって、自己判断で443に変更する。
Passwordサービス提供元から指定されたTrojan認証用パスワード。アカウントのログインパスワードやUUIDを入力する、またはコピー時に空白が混入する。
Peer / SNI設定情報で指定されたTLSサーバー名。例:tls.example.com。URLやポートを入力する、またはよく知られたWebサイトのドメイン名に適当に置き換える。
Allow Insecure通常はオフにして、証明書を正しく検証します。証明書エラーの一般的な解決策として、検証をスキップする。

たとえば、設定情報でAddressに192.0.2.10を指定し、Peerにtls.example.comを指定する場合、両者が異なっていても必ずしも誤りではありません。前者は接続先、後者はTLSで使うサーバー名です。このIPアドレスは説明用の例であり、実際の接続には使えません。実際の設定には、ご自身の完全な接続情報を使用してください。

Trojanを手動で追加する:5つの手順で確認

まず、現在使えている設定と元の接続情報を保存します。既存のサブスクリプションから追加したサーバーの場合は、インポート後の各項目を確認し、元の記録をすぐに上書きしないでください。サブスクリプションの更新で関連パラメーターが再設定されることがあります。問題を切り分けるときは元の記録を残し、確認用の設定を別に手動で作成できます。

  1. 追加画面を開く

    Homeで右上の「+」をタップし、Add Serverを開いて、TypeからTrojanを選択します。編集しているのがサーバー設定であり、Config内のルールファイルではないことを確認してください。

  2. アドレスとポートを入力

    利用中の設定情報にあるホスト名またはIPアドレスをAddressに、待ち受けポートをPortに入力します。Addressにはプロトコルの接頭辞、パス、クエリパラメーターを付けず、ポートは別の項目に入力してください。

  3. 認証パスワードを確認

    Passwordにはパスワード全体を入力し、大文字・小文字や記号もそのまま保持します。手入力の場合は元のパスワードを使ってください。共有リンクからコピーする場合、エスケープされた文字列をそのまま元の値として扱わないよう注意します。

  4. TLSサーバー名を確認

    設定情報に従ってPeer/SNIを入力し、Allow Insecureはオフのままにします。指定されている通信方式や追加項目も確認してください。明記されていない項目を推測で補わないでください。

  5. 保存して接続を確認

    保存後にHomeへ戻り、対象のサーバー設定を選択して選択マークを確認し、接続スイッチをオンにします。初回接続時は、システムの案内に従ってVPN構成の追加を許可し、Connectivity Testを実行してください。

Connectivity Testは接続性を確認するテストであり、すべてのWebサイトやルール、継続的な安定性を保証するものではありません。失敗した場合は、まず状況を記録してから設定を確認します。成功した場合も、実際の接続先にアクセスし、その通信が本当にこのTrojan接続を使っているか確認してください。

Allow Insecure:暗号化とサーバー認証を区別する

Allow Insecureは証明書の検証条件を緩和する設定であり、接続を平文に切り替えるものではありません。TLS接続が確立しても、証明書を適切に検証できなければ、接続先の身元を確認できたとはいえません。パスワードが正しくても、サーバー認証を省略した問題は解消されません。

Allow Insecureをオフ

推奨

通常どおり証明書を検証します。証明書エラーが発生した場合は、エラーを無視するのではなく、Peer/SNI、端末の日付と時刻、証明書の有効期間、サーバー証明書チェーンを確認してください。

適した用途:普段の接続、証明書が正しく設定されたサービス

Allow Insecureをオン

証明書の検証が緩和され、サーバーの身元を確認する能力が低下します。誤ったアドレス、ポート、Passwordを修正する設定ではなく、接続が長期的に正常であることの証明にもなりません。

適した用途:リスクを理解したうえで、一時的かつ管理された環境で証明書の問題を調査する場合。常用設定にはしないでください。

結論:サーバー名と証明書の不一致を解消する

Allow Insecureをオンにした場合だけ接続できるなら、まずオフに戻してください。そのうえで、証明書エラー、想定されるPeer/SNI、発生時刻をサービス提供元に伝えて確認します。一時的にWebページを開けたというだけで、問題の調査を終わらせないでください。

証明書エラーは、端末の日付や時刻が正しくない場合にも発生します。まずシステム時刻を確認し、次に証明書が対象ドメインをカバーしているか確認してください。AddressにIPアドレスを入力する場合は、別途Peer/SNIが指定されていないか特に確認します。特定のドメイン向けに発行された証明書が、そのIPアドレスの認証にも使えるとは限りません。

接続できないときは、ネットワーク・TLS・認証・ルールの順に確認

同じ「Webページを開けない」という症状でも、発生している段階は異なる場合があります。まず端末がネットワークに正常に接続できていることを確認し、接続ログに表示されたエラーの種類を見ます。以下は切り分けの目安であり、一つのメッセージだけで原因を特定できるとは限りません。

ルールの影響を一時的に除外するには、Home → Global RoutingでProxyを選び、同じ接続先を再確認します。確認後は元のモードに戻してください。Proxyはプロキシ経由のルーティングテスト、Directは直接接続、Configは現在の設定ルールに基づく処理です。Sceneは実際の設定内容に応じて判断してください。常にProxyと同じ動作をする選択肢ではありません。

Proxyでは正常でConfigでは問題が起きる場合、現在のルールにあるDOMAIN-SUFFIX、IP-CIDR、GEOIP、FINALの順序と適用先を優先して確認してください。ルールを変更してもTrojanのパスワードは修正されません。2種類の問題を分けて検証しましょう。

Password・SNI・インポート設定に関するよくある質問

Passwordにはサービス提供元サイトのログインパスワードを入力しますか?

このTrojanサーバー設定に記載された認証用パスワードだけを入力します。Webサイトのアカウントパスワードとプロキシ認証用パスワードは別のものです。自分の設定情報に戻って該当項目を確認し、別のプロトコル用UUIDやキーを代わりに使わないでください。

Addressにドメイン名を入力した場合も、Peerの設定は必要ですか?

まず元の設定情報にSNIが明記されているか確認します。指定されている場合はその値を入力し、指定がなければ推測で作らないでください。証明書名のエラーが起きた場合は、関係のないドメインを試すのではなく、期待されるTLSサーバー名をサービス提供元に確認します。

サブスクリプションをインポートした後、変更したSNIが元に戻るのはなぜですか?

サブスクリプションを更新すると、サブスクリプション内の情報でサーバーパラメーターが更新されることがあります。手動確認用の記録を別に残し、更新前後のPeer/SNIと通信項目を比較してください。不一致が続く場合は、同じ項目を何度も上書きするのではなく、サブスクリプションの元の設定を確認します。

接続スイッチがオンなら、Trojanの設定は正しいということですか?

いいえ。システムに接続中と表示されるのは、端末上のVPN接続が開始したことを示すもので、リモート側の認証や接続先へのアクセスが成功したことを意味しません。Homeでサーバーが選択されていることを確認し、Connectivity Testを実行してから、Global Routingと実際の通信も確認してください。

ログや設定画面のスクリーンショットを共有する前に、Password、サブスクリプションの完全なリンク、tokenなどの機密情報を隠してください。問題を説明するときは、エラーの原文、発生した段階、確認済みの項目を伝えれば十分です。認証情報全体を公開する必要はありません。最終的な判断は、自分の接続情報、アプリ内の実際の項目、再現可能なテスト結果に基づいて行ってください。

App Storeで正規アプリを確認