Shadowrocket Trojan 節點設定教學:Password、SNI 與憑證驗證

了解 Trojan 如何透過 TLS 建立連線,並逐一說明 Add Server 中 Address、Port、Password、SNI、Allow Insecure 等欄位,以及填寫錯誤時常見的握手失敗情況。

本文重點

在 Shadowrocket(小火箭)的 Home 新增自己已有的 Trojan 參數時,先確認連線位址與連接埠,再核對 Password、SNI 和憑證驗證設定。本文以使用者已有服務商及設定資料為前提,說明手動填寫、匯入後檢查,以及排查握手失敗的順序;範例網域僅用於解釋欄位,並非可用連線。

Trojan 連線流程:先建立 TLS,再驗證 Password

在 Home → Add Server 將 Type 設為 Trojan 後,填入遠端服務的連線參數。一般 Trojan 連線會先連至 Address 指定的主機與 Port 指定的連接埠,再進行 TLS 握手,接著透過加密通道提交協定驗證資訊。Password 正確不代表憑證也正確;憑證有效也不代表帳號驗證一定成功,兩者應分開確認。

443
常見的 TLS 服務連接埠;實際值請依現有設定填寫
1–65535
Port 的有效數值範圍;欄位中不要填入協定或路徑
3 個階段
連線抵達 → TLS 握手 → Trojan 驗證

在現有參數中看到 443 時,別因此判定服務一定可用,也不要自動把其他連接埠改成這個數值。TLS 也能部署在其他連接埠;同樣地,能與某個連接埠建立 TCP 連線,只表示網路路徑及監聽服務可能可達,不能證明該連接埠提供相符的 Trojan 服務。

Add Server 欄位對照:Address、Port 和 Password 怎麼填

在 Home 點選右上角的新增按鈕,進入 Add Server,先將 Type 設為 Trojan,再依照現有參數逐項填寫。以下的 connect.example.com 和 tls.example.com 是保留用的範例網域;表格說明的是填寫格式,不是一組可供測試的服務參數。介面語言或表單版面不同時,SNI 可能位於 TLS 相關選項中,請依欄位用途確認。

欄位填寫內容確認重點
TypeTrojan必須與遠端服務類型一致。
Address現有服務的網域或 IP,例如 connect.example.com不要加上 https://、連接埠或網頁路徑。
Port服務商提供的數值,例如 443與 Address 分開填寫,不能使用全形數字。
Password該 Trojan 服務的完整 Password區分大小寫,並檢查前後空格及複製時帶入的換行。
SNI現有設定指定的 TLS 主機名稱,例如 tls.example.com填寫主機名稱,不要填 URL、路徑或連接埠。
Allow Insecure一般使用時保持關閉不要以略過憑證驗證來取代修正名稱、有效期限或憑證鏈。

將 Password 貼上後,應回到原始資料確認內容,不要只憑長度判斷。Trojan 的 Password 不是 App Store 購買憑證,也不是自行產生的 UUID。若資料中只有服務商網站的登入密碼,沒有明確的 Trojan 參數,請先取得相應的連線設定,切勿直接填入網站登入密碼。

在 Address 填入網域時,裝置必須先解析網域才能建立連線;填入 IP 則會直接連至該位址,但不會因此免除 TLS 名稱驗證。若服務使用網域憑證,而連線位址是 IP,通常仍需依照現有設定指定正確的 SNI,不能直接把 IP 當成憑證網域。

SNI 與憑證驗證:連線位址和驗證名稱可以不同

在 SNI 填入服務商指定的主機名稱後,TLS 握手會帶上該名稱,遠端可依此選擇相應的憑證或服務。Address 用來指定「連到哪裡」,SNI 則告知 TLS 服務預期連線的主機名稱;一般 TLS 設定也會使用該名稱核對憑證身分。兩個欄位相同很常見,但並非必要。

啟用憑證驗證

建議設定

保持 Allow Insecure 關閉,使用正確的 SNI,並透過系統信任機制核對遠端憑證。若憑證已過期、名稱不符或不受信任,應修正設定或遠端憑證。

適用情況:日常連線與正式設定驗證

略過憑證驗證

啟用 Allow Insecure 會放寬憑證驗證,降低確認遠端身分的能力。這無法修正 Password、Port 或傳輸方式錯誤,也不能以連線成功作為設定正確的依據。

適用情況:了解現有設定的風險差異;不建議作為一般修復方式

結論:先修正 SNI,不要略過驗證

若憑證名稱不符,先逐項核對 SNI、現有設定及憑證涵蓋的網域;名稱正確但仍失敗時,再檢查裝置時間、憑證有效期限與伺服器憑證鏈。

SNI 留白時,不應假設任何連線位址都能通過驗證。預設名稱的選取方式視實際設定而定;若服務明確提供 SNI,請保留原值。若憑證只涵蓋 tls.example.com,將 SNI 改成其他網站的網域,並不會讓它自動取得相應的身分。

手動新增與首次驗證:儲存後確認實際使用的節點

在 Home 完成 Add Server 後,先儲存,再選取剛新增的項目進行驗證。每次只修改一個可疑欄位並記錄結果,避免同時更改 Password、SNI 和 Port,導致無法判斷哪項變更有效。首次連線時依系統提示允許新增 VPN 設定,之後返回 Shadowrocket 確認連線狀態。

  1. 選擇類型

    依序前往 Home → 右上角新增按鈕 → Add Server → Type,選擇 Trojan。先確認現有資料的協定類型,不要將其他協定的參數套用到這份表單。

  2. 填寫連線資料

    將現有主機名稱填入 Address、服務連接埠填入 Port、完整密碼填入 Password。從位址移除 URL 協定前綴,並將連接埠另外填寫。

  3. 確認 TLS 設定

    在 SNI 或相應的 TLS 主機名稱欄位填入現有值,並保持 Allow Insecure 關閉;若資料另有傳輸參數,也要一併確認相關設定。

  4. 儲存並選取

    儲存後返回 Home,選取該 Trojan 項目,再檢查 Global Routing。排查期間可暫時選用 Proxy,減少規則對測試路徑的影響。

  5. 驗證後還原設定

    進行一次一般連線,並確認連線記錄中的實際目標、使用的節點與錯誤階段。驗證完成後,還原原本的 Global Routing 設定及自動連線設定。

在 Global Routing 使用 Config 時,請求會依目前設定中的規則比對,可能由 DOMAIN-SUFFIX、GEOIP、IP-CIDR 或 FINAL 指向不同策略;頁面能開啟,不代表流量一定經過剛新增的 Trojan 項目。Direct 用於直連,不能以直連成功證明該項目可用。Scene 則應依實際場景確認設定,不能預設它等同於 Proxy。

如何排查握手失敗:依網路、TLS、驗證順序縮小範圍

在連線記錄中看到錯誤後,先判斷失敗發生於解析、連線還是 TLS 階段,再修改相應欄位。下表列出常見的可觀察現象,但單一提示不一定只對應一種原因;實際訊息也可能因系統及遠端回應而異。不要只憑延遲數值或一次逾時,就認定是 Password 錯誤。

觀察到的現象優先確認項目下一步
網域解析失敗,尚未連線至遠端Address 拼寫、目前網路的 DNS先確認主機名稱能否解析,不要更改 Password 或關閉憑證驗證。
連線逾時或遭拒Address、Port、遠端監聽狀態與網路路徑對照現有連接埠,並改用另一個可用網路比較;避免連續更改 TLS 欄位。
顯示憑證名稱不符SNI 與憑證涵蓋的網域恢復服務指定的主機名稱,並確認沒有加入協定前綴、路徑或多餘空格。
顯示憑證已過期或不受信任裝置時間、憑證有效期限、憑證鏈確認系統時間,並向自己的服務商回報憑證問題;保持驗證功能開啟。
TLS 完成後連線立即中斷,或驗證未通過Password、Type、服務狀態與傳輸參數重新核對原始參數;連線中斷本身不足以證明 Password 錯誤。
連線已建立,但指定網頁無法開啟實際選取的節點、規則策略、目標 DNS 與遠端連線狀況先查看該請求的實際路徑,再區分是規則問題還是目標網站問題。

回報故障時,提供錯誤發生階段、網路類型及已遮蔽敏感資訊的欄位差異即可。Password、完整分享連結及訂閱網址中的 token 都屬於敏感資訊,請勿連同截圖公開傳送。向自己的服務商確認時,具體描述憑證錯誤或連線中斷的情況,比只說「無法使用」更有助於排查。

匯入現有設定後:檢查覆寫情況與更新來源

在 Home 使用現有分享連結、QR Code 或訂閱匯入 Trojan 後,仍應開啟項目的編輯頁面,確認 Type、Address、Port、SNI 與 Allow Insecure。匯入可減少手動抄寫錯誤,但不代表遠端參數仍有效,也不保證連結包含所有額外傳輸設定。

如需進一步區分分流與連線問題,可接著閱讀連線問題排查說明與規則與策略說明。先確認單一項目的連線參數正確,再回到日常 Config 規則驗證目標請求,可避免將節點參數、DNS 與策略選擇混為一談。

App Store 正版入口確認開發者與 App ID