Shadowrocket Trojan 設定教學:密碼、SNI 與 TLS 憑證驗證

了解 Trojan 如何透過 TLS 傳輸,並逐項對照服務商提供的資料,設定 Add Server 中的位址、連接埠、密碼、SNI 與憑證驗證。

本文速覽

適用於已取得服務商提供 Trojan 參數的使用者。先分清連線位址、驗證密碼與 TLS 服務名稱,再依照 Add Server 欄位完成設定,最後根據連線結果判斷問題出在網路、憑證、驗證或規則。以下以 iPhone / iPad 介面為例;Mac、Windows、Android、Linux 的參數核對原則相同,實際入口請以各平台介面為準。

1. Trojan 原理:先建立 TLS,再進行密碼驗證

Shadowrocket(小火箭)中的 Trojan 是一種代理協定。典型連線會先透過 TCP 連接伺服器位址與連接埠,再完成 TLS 交握,並在加密通道中傳送驗證資訊與目標請求。TLS 用於保護傳輸並驗證伺服器身分;Trojan 密碼則用於確認使用者是否有權使用服務,兩者的用途不同。

解析伺服器位址 建立 TCP 連線 完成 TLS 交握 驗證認證資訊 轉送目標請求

因此,密碼正確不代表 TLS 一定能成功;TLS 成功也不代表帳號仍然有效。位址無法解析、連接埠無法連線、憑證名稱不符或密碼錯誤,都可能造成連線失敗,但發生的階段各不相同。排查時應依照上述順序逐步定位,不要一次更改所有參數。

443
常見 TLS 伺服器連接埠;實際連接埠請以服務商提供的資料為準
2 類
身分驗證:TLS 伺服器身分與 Trojan 使用者認證
5 項
先核對 Address、Port、Password、SNI 與憑證驗證

443 是常見連接埠,但不是協定的硬性要求,也不能據此判斷服務是否可用。若服務商指定 8443 等其他連接埠,請照原資料填寫。本文不提供或推薦節點、訂閱或服務商;訂閱網址請向自己的服務商取得。

2. 新增前先整理參數:Address 不等於 SNI

Address 決定用戶端要連線到哪裡,可以是網域名稱或 IP 位址。SNI 是 TLS 交握時傳送的服務名稱,通常用來讓伺服器選擇對應的網站與憑證。在常見用戶端設定中,SNI 也會用於確認伺服器名稱;若介面另有憑證驗證名稱欄位,請依服務商說明分別填寫。連線位址、SNI 和額外傳輸層的 Host 不可視為同一欄位。

連線與驗證參數

Type
Trojan,必須與伺服器端協定一致
Address
服務商提供的主機名稱或 IP,不含 https:// 與路徑
Port
伺服器監聽的連接埠,例如資料明確指定的 443
Password
該節點的 Trojan 驗證密碼,大小寫與符號都要保留

訂閱存取憑證、網站登入密碼與節點 Password 不可互相代用。

TLS 與傳輸參數

TLS
標準 Trojan 連線需要 TLS,請依節點資料設定
SNI
填寫服務商指定的 TLS 服務名稱,不含通訊協定前綴或連接埠
憑證驗證
保持啟用,並確認信任鏈、有效期限與名稱相符
Transport
僅依資料設定;不要自行加入 WebSocket 或其他封裝

不可根據名稱猜測額外傳輸參數;資料不完整時,請先向服務商確認。

例如,連線位址是 IP,而憑證簽發給某個網域時,SNI 通常仍應填入服務商指定的憑證網域。反過來說,Address 即使是網域名稱,也不代表它一定就是 SNI。憑證允許的名稱取決於憑證中的 Subject Alternative Name 等資訊,不能任意填入一個可連線網站的網域。

結論:先確認服務名稱,再處理憑證錯誤

遇到名稱不符時,先逐字核對 SNI 與服務商提供的憑證網域;不要用停用憑證驗證來取代正確設定。

3. Home → Add Server:手動填寫與儲存步驟

手動新增適合核對單一節點,也方便找出訂閱解析後究竟是哪個欄位不一致。以下使用英文介面名稱說明;實際顯示的欄位可能因平台與傳輸方式而異,只填寫介面中確實存在且有明確資料的選項。

  1. 開啟 Home,點選右上角的新增按鈕,進入 Add Server。先將 Type 設為 Trojan,再核對畫面顯示的協定專用欄位。
  2. 在 Address 貼上伺服器主機名稱或 IP。移除複製內容中混入的空格、換行與協定前綴,不要把整段分享連結貼進位址欄。
  3. 在 Port 填入指定的連接埠。例如資料寫 443,就填 443;不要因為逾時就自行改成 80。伺服器沒有監聽的連接埠,不會因為修改用戶端設定而生效。
  4. 在 Password 貼上節點驗證密碼。檢查前後空格、字母大小寫與符號,避免把訂閱網址中的 token 誤當成密碼。
  5. 核對 TLS 與 SNI。SNI 只填主機名稱;若服務商有提供額外傳輸參數,也要一併核對,不要沿用其他節點的設定。
  6. 保持憑證驗證啟用,儲存節點後返回 Home,並明確選取剛儲存的項目。首次連線時,請依系統提示允許建立 VPN 設定。

測試前先不要更動 Config 中的規則。先確認單一節點能否在目前網路下完成連線,再檢查規則是否將請求送往預期的出口。這樣可避免混淆節點參數錯誤與規則比對問題。

4. 匯入既有訂閱後,仍要檢查節點實際欄位

服務商已提供訂閱時,可透過 Add Server 中的 Subscribe 類型匯入,不必逐筆重新建立。訂閱用於批次發佈節點資料,但不保證其中的位址、憑證或帳號狀態一直有效。成功匯入只表示用戶端已取得並解析內容,不代表每個節點都已通過連線測試。

Trojan 與 Shadowsocks、VMess、VLESS、Hysteria2、WireGuard 的欄位含義並不相同。不能只將 Type 改為 Trojan,卻繼續使用原協定的驗證資料。若訂閱解析出非預期的協定類型,應核對原始資料與匯入方式,不要只憑連接埠號碼判斷協定。

5. 依階段排查連線失敗:網路、TLS、驗證、分流

Home 中的延遲結果只能反映該測試方式涵蓋的連線路徑。有數值不一定代表目標網頁能完整開啟;顯示逾時也不能單憑這一項斷定密碼錯誤。請結合連線記錄、實際瀏覽結果,以及切換網路後的狀況判斷。下表提供排查方向,並非所有故障的唯一原因。

觀察到的狀況 優先核對項目 下一步
伺服器網域名稱解析失敗 Address 拼寫與目前網路的 DNS 可用性 確認一般網路連線正常,再核對位址;不要自行換成來源不明的 IP
連線逾時或遭拒 連接埠、伺服器監聽狀態與目前網路的可連線性 保持參數不變,切換 Wi-Fi 與行動網路進行比對,再聯絡服務商確認連接埠
TLS 交握或憑證驗證失敗 SNI、憑證有效期限、信任鏈與系統時間 修正服務名稱與裝置時間;過期憑證或不完整的憑證鏈應由服務商處理
連線很快中斷,無法轉送請求 Password、帳號狀態與額外傳輸參數 重新核對驗證資料,並請服務商依伺服器記錄判斷
部分網站可用,部分網站無法連線 Global Routing、規則比對、DNS 與目標網站狀態 先短暫切換至 Proxy 比對,再還原設定並檢查 Config

裝置時間明顯錯誤會影響憑證有效期限的判斷。iPhone / iPad 可在系統 Settings → General → Date & Time 檢查 Set Automatically;這是系統設定,不是 Shadowrocket 內的選單。校正時間後重新連線,不要以忽略憑證錯誤來掩蓋原因。

結論:參數不變、切換網路,比一次更動多個欄位更有助於診斷

若同一節點在行動網路可用、在某個 Wi-Fi 下無法使用,請先檢查該網路的名稱解析與連線限制;此時反覆修改 Password 或 SNI 會破壞有效的比對條件。

6. 節點可用後,再檢查 Global Routing 與 Config

節點設定決定「如何連線至代理伺服器」,Global Routing 與 Config 則決定「哪些請求使用代理」。短暫選擇 Proxy 有助於排除規則造成的繞送,但不代表適合當作長期設定的通用解法。比對完成後,應還原原本的使用方式,並透過實際請求確認結果。

檢查 Config 時,DOMAIN-SUFFIX 比對網域後綴,IP-CIDR 比對 IP 網段,GEOIP 依 IP 地理位置分類處理,FINAL 則是兜底規則。規則由上往下比對;若請求已被前面的 DIRECT 規則接手,之後選用可用的代理也不會改變該次比對結果。修改前應備份設定,不要直接用零散範例覆蓋整份檔案。

Settings → On Demand 主要用於設定符合條件時的自動連線行為,無法修復 Trojan 密碼、憑證或伺服器連接埠問題。手動連線已失敗時,先排除節點本身的問題;手動連線正常但自動連線不如預期時,再單獨檢查 On Demand 條件。

7. Trojan 參數常見問題

Address 和 SNI 可以填同一個網域嗎?

可以,但前提是服務商資料明確如此,且憑證對該名稱有效。如果 Address 是 IP、SNI 是網域,請保留這項差異;不要為了「統一」而把兩者改成相同內容。

連接埠填 443,為什麼還是逾時?

443 不代表一定可用。先確認服務商是否確實在該連接埠提供 Trojan,再保持參數不變並切換網路。如果記錄顯示連線尚未建立就停止,應優先檢查位址與連接埠是否可連線,而不是修改憑證選項。

憑證出現錯誤,可以先關閉驗證嗎?

應先修正 SNI、系統時間與憑證鏈。關閉驗證會失去重要的伺服器身分確認;即使連線成功,也不能證明設定安全或正確。伺服器憑證問題應由服務商處理。

訂閱更新後密碼變了,應保留舊密碼嗎?

先向服務商確認最新的驗證資料。若憑證已更新,舊密碼可能不再有效;若更新內容有誤,應修正訂閱來源。不要同時保留多個同名項目,再憑位置猜測該使用哪一個。

已開啟連線,為什麼網頁還是無法開啟?

開關狀態表示通道已啟用,不代表上游節點已完成轉送。先在 Home 確認選取的節點,再短暫使用 Global Routing → Proxy 進行比對;若仍無法連線,請依序檢查網路、TLS 與驗證。

下載 Shadowrocket