Shadowrocket Trojan 設定教學:Password、SNI 與 Allow Insecure 填寫指南

了解 Trojan 如何透過 TLS 傳輸,並掌握 Shadowrocket 的 Add Server 欄位填寫方式,以及 Allow Insecure 的安全風險。

本文重點

新增 Trojan 時,Address 決定連線目的地,Port 指定連線埠,Password 用於協定驗證,SNI 則是 TLS 交握時使用的伺服器名稱。請依照既有設定逐項填寫,並通常將 Allow Insecure 保持關閉。本文適合手動新增節點,或排查匯入後無法連線的情況,協助區分網路無法連線、憑證驗證失敗與密碼錯誤,避免以略過憑證驗證掩蓋設定問題。

Trojan 與 TLS:先釐清連線、憑證和驗證

Trojan 使用 TLS 傳輸代理協定資料。通常會先連線至 Address、Port 指定的伺服器,再進行 TLS 交握,接著於加密通道中完成 Trojan 驗證並轉送請求。TLS 負責傳輸加密與伺服器身分驗證,Password 則用於 Trojan 存取驗證;兩者用途不同,不能互相取代。

因此,Password 填寫正確不代表憑證一定有效,連得上連接埠也不代表 Trojan 驗證已成功。一般 HTTPS 網站與 Trojan 服務都可能使用 443 連接埠,但不能把任意 HTTPS 網址填入 Add Server,當成 Trojan 節點。

Add Server 欄位:Address、Port、Password 與 SNI

先取得自己現有服務的完整參數,再進入編輯頁面。以下的網域與連接埠僅用來說明欄位對應關係,不是可用的連線資訊;實際值請依原始設定填寫。不要因為範例使用 443,就把自己的其他連接埠改成 443。

欄位填寫內容常見錯誤
Type選擇 Trojan,並與伺服器端協定一致。只因連接埠相同,就選擇其他協定。
Address伺服器網域或 IP,例如 edge.example.com。貼上完整網址,包含 https://、路徑或連接埠。
Port伺服器端的監聽連接埠,例如 443;有效範圍為 1–65535。漏填、自行猜測,或在 Address 中重複填入連接埠。
Password原始設定提供的 Trojan 密碼,大小寫與字元均須保持不變。填入帳號登入密碼,或複製時連同空格、換行一起貼上。
SNI原始設定指定的 TLS 伺服器名稱,例如 tls.example.com。填入網址、IP 與連接埠,或任意改成其他網站網域。
Allow Insecure通常保持關閉,維持正常的憑證驗證。遇到任何錯誤都開啟,導致憑證問題遭到掩蓋。

Address 和 SNI 為何可能不同

Address 是網路連線的目的地;SNI 則是 TLS ClientHello 中帶上的伺服器名稱,伺服器可據此選擇憑證或虛擬主機。兩者可能相同,也可能依設定指定為不同值。例如,連線目的地是某個 IP,但 TLS 名稱使用憑證涵蓋的網域;此時應保留設定提供的名稱,不要直接把 SNI 改成該 IP。

SNI 與憑證驗證有關,但「送出 SNI」本身不代表「憑證已通過驗證」。憑證仍須符合有效期限、信任鏈與名稱相符等要求。不要依賴 SNI 留空後的預設推算來補救不完整的參數;若 Address 是 IP,或與憑證名稱不同,請先確認原始設定要求的 TLS 名稱。

手動新增步驟:先儲存參數,再測試實際連線

以下說明如何手動新增單一 Trojan 節點。若節點來自現有訂閱,請先核對訂閱中的原始參數,避免修改後與來源設定不一致。訂閱更新時可能會重新寫入節點,因此請記錄發現的問題並修正來源參數,不要長期依賴本機的暫時修改。

  1. 開啟新增頁面

    前往 Home → 點選右上角的「+」,開啟 Add Server。先確認正在新增項目,以免誤改其他可用設定。

  2. 選擇協定

    前往 Type → Trojan。請以原始設定為準;即使 Address、Port 相同,Type 選錯仍會導致連線失敗。

  3. 填寫連線參數

    返回 Add Server,填入 Address、Port、Password。Address 只填主機部分,Password 請依原值複製,不要額外加上引號,也不要自行轉換成摘要值。

  4. 檢查安全設定

    在該項目的 TLS 相關設定中檢查 SNI 與 Allow Insecure。SNI 請使用原始設定指定的名稱,並保持 Allow Insecure 關閉;若還有其他傳輸欄位,也請逐項依原始設定確認。

  5. 儲存並測試

    儲存後返回 Home,選取剛新增的項目。為了排除規則的影響,可暫時將 Global Routing 設為 Proxy,開啟連線開關,並依系統提示允許加入 VPN 設定。接著瀏覽已知可用的 HTTPS 網頁,完成後恢復原本的路由模式。

Allow Insecure:比較憑證驗證設定

Allow Insecure 的主要影響是放寬或略過正常的 TLS 憑證驗證,並不會讓連線改為明文傳輸。不過,如果加密通道無法可靠驗證對方身分,仍有可能連到冒充的伺服器。這項設定也無法修正密碼錯誤、連接埠關閉、網域解析失敗或伺服器端協定不相符等問題。

關閉 Allow Insecure

建議

維持正常的憑證驗證。若憑證名稱不相符、已過期或信任鏈異常,連線應顯示錯誤,以便找出需要修正的身分驗證問題。

適用情境:日常使用、正式設定與一般疑難排解。

開啟 Allow Insecure

放寬憑證驗證後,即使請求能繼續,也不能證明伺服器身分可信。這項設定不應用來長期處理憑證過期或 SNI 錯誤。

適用情境:了解憑證風險時,用來辨識設定差異;不建議日常使用。

結論:修正憑證問題,不要保留略過驗證的設定

如果同一組參數只有在開啟 Allow Insecure 後才能連線,請恢復為關閉,再檢查 SNI、裝置時間與伺服器憑證鏈;若無法自行修正,請向現有服務的維護人員回報錯誤類型。

先在裝置的系統設定中確認日期與時間正確,再檢查憑證是否過期、憑證涵蓋的網域是否包含預期名稱,以及伺服器端是否傳送完整的中繼憑證鏈。自簽憑證需要另外管理信任,不能以長期略過驗證取代可信的設定方式。

依狀況排除問題:逾時、憑證錯誤與驗證失敗

請依照連線失敗提示出現的階段判讀。不同網路與伺服器端可能出現相似的逾時或中斷結果;以下提供排查順序,不能只憑單一提示就斷定故障原因。記錄錯誤文字時可保留錯誤類型,但請遮蔽 Password、訂閱權杖與完整連線資訊。

一直逾時,是不是 Password 填錯了?

先返回 Home → 開啟對應項目的編輯頁,檢查 Address、Port,再確認目前的網路能否連上該地址與連接埠。逾時可能發生在建立連線或交握階段,不能直接判定是密碼錯誤。改用另一個自己可用的網路進行相同測試,有助於判斷問題是否與目前的網路有關。

出現憑證錯誤時,SNI 應填哪個網域?

請填入現有設定指定的 TLS 名稱,而不是瀏覽器要瀏覽的目標網站網域。檢查 SNI 是否包含通訊協定前綴、連接埠或空格,並確認裝置時間正確。若名稱無誤仍出現錯誤,應檢查伺服器端憑證有效期限與憑證鏈,不要直接開啟 Allow Insecure。

連線剛建立就中斷,需要重新產生密碼嗎?

先逐字核對 Password 與 Type,檢查複製內容是否混入換行,以及項目是否漏掉原始設定指定的傳輸設定。不要自行產生新密碼,因為伺服器端不會因此同步變更。TLS 建立後立即中斷也可能有其他原因,需搭配伺服器端記錄確認。

測試有數值,但網頁打不開怎麼辦?

在 Home 確認已選取目標項目,暫時使用 Global Routing → Proxy,再瀏覽同一個網頁。若 Proxy 可用而 Config 不可用,請檢查 Config 目前啟用的規則與策略目標;若兩種模式都失敗,則檢查驗證、DNS 與目標網站。不要只根據延遲數值判定節點正常。

驗證完成後:恢復 Config,檢查規則與更新

Global Routing → Proxy 用於這次測試,以排除規則因素;不代表所有情境都應長期使用此模式。Direct 表示直接連線,不能用來驗證 Trojan 轉送;Config 依目前的設定規則處理請求;Scene 則依已設定的情境選擇路由方式。日常使用時,請恢復原本有效的模式。

若 Proxy 正常,但 Config 的連線結果不如預期,請檢查目前 Config 中的規則順序與策略。例如,以下語法示範將 example.com 及其子網域交由 PROXY 處理,其餘請求則交由 DIRECT。這只是用來說明規則含義,並非要求覆蓋現有設定;實際設定中的策略目標必須有效。

DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
App Store 正版確認