2026-09-06 · 故障排除 · 約 9 分鐘

V2Ray TLS 握手失敗、憑證錯誤怎麼排除?檢查系統時間與 SNI 設定

TLS 錯誤通常不是節點問題。系統時間不準、SNI 與偽裝網域不符,以及誤用 allowInsecure,是最常見的三大原因。

本文重點

排查順序:先從核心日誌判斷是憑證驗證失敗,還是一般連線逾時,再檢查本機時間、SNI、憑證鏈與伺服器監聽狀態。適用於在 v2rayN、v2rayNG 或 v2flyNG 遇到 TLS 錯誤的使用者;看完即可依錯誤訊息定位設定問題,避免用略過驗證來掩蓋問題。

先看日誌:TLS 握手失敗發生在哪個階段

連線階段:節點顯示逾時,不代表憑證有問題。常見的 TCP + TLS 代理連線,會先解析伺服器位址、建立 TCP 連線,再進行 TLS 協商,最後才進行代理協定驗證與資料傳輸。任何前置步驟失敗,都可能讓介面顯示無法連線。

位址解析 TCP 連線 TLS 協商 憑證驗證 代理驗證

擷取日誌:在用戶端日誌區找到剛才那次連線的錯誤,保留時間、錯誤原文與使用的核心名稱。優先查看底層原因,不要只看外層的 failed to process outbound traffic。這通常只是包裝錯誤訊息,無法單獨判斷問題出在憑證、網路還是協定參數。

錯誤:x509: certificate has expired or is not yet valid

原因與解法:本機時鐘不在憑證有效期限內,或憑證確實已過期、尚未生效;先校準系統時間,再檢查伺服器實際提供的憑證有效起訖時間。

錯誤:x509: certificate signed by unknown authority

原因與解法:憑證鏈無法連結至本機信任的根憑證,可能是缺少中繼憑證、使用自簽憑證,或連線遭到攔截;請確認憑證簽發者及伺服器提供的完整憑證鏈。

錯誤:remote error: tls: handshake failure

原因與解法:對端拒絕了握手,光看這行訊息無法確定原因;請檢查 SNI、TLS 終止位置與伺服器日誌,再確認協商參數。

逾時判斷:如果日誌只有 dial tcp、i/o timeout 或連線遭拒,且沒有憑證錯誤,應先確認位址、連接埠與伺服器監聽狀態。尚未收到伺服器憑證時,修改憑證驗證開關無法修復連線。

系統時間不同步:先檢查日期,再確認同步狀態

有效期限判斷:憑證包含生效時間與到期時間,用戶端會依本機時鐘判斷憑證是否有效。電腦長期關機、虛擬機器還原快照,或裝置斷電後時鐘重設,都可能讓有效憑證看起來尚未生效或已經過期。別只看工作列上的時分,年份與日期也同樣重要。

  1. Windows 校時:開啟「設定」→「時間與語言」→「日期與時間」,啟用「自動設定時間」,確認時區後點選「立即同步」。不同系統版本的按鈕位置可能略有不同。
  2. 同步結果:查看最近一次成功同步的時間。若要進一步確認,可在命令提示字元執行下方的唯讀命令,檢查時間來源與同步狀態。
  3. Android 校時:在系統設定中搜尋「日期與時間」,啟用自動設定日期與時間及自動時區;實際路徑依裝置系統而異,完成後重新連線。
  4. 重現確認:校準時間後重新連線,比對同一節點的新日誌。如果仍顯示憑證過期,請由伺服器管理者確認憑證,不要繼續調整本機日期。
w32tm /query /status
w32tm /query /source

時區差異:時區主要影響本地時間的顯示,TLS 驗證比較的是絕對時間。把時區改成其他地區無法修復憑證問題;應確保系統實際時間準確,而不是讓鐘面看起來接近另一台裝置。

443 / TCP
HTTPS 常用連接埠,節點連接埠依設定為準
123 / UDP
NTP 常用連接埠,校時失敗時請檢查對外連線規則

SNI 填錯:分別確認伺服器位址、憑證網域與 Host

欄位用途:SNI 是用戶端在 TLS 握手時傳送的伺服器名稱,常用來讓同一位址上的服務選擇相應的憑證與網站。Xray、V2Ray 的常見 TLS 設定以 serverName 表示此欄位;用戶端介面可能顯示為 SNI 或伺服器名稱。連線位址可以是 IP,但憑證身分通常仍須依伺服器指定的網域驗證。

欄位用途檢查重點
伺服器位址指定 TCP 連線目標確認網域解析或 IP 正確,且連接埠與伺服器設定一致
SNI / serverName用於 TLS 憑證選擇與名稱驗證使用伺服器指定的名稱,憑證 SAN 必須涵蓋要驗證的名稱
WebSocket Host在 TLS 連線後用於 HTTP 請求路由須與反向代理網站設定一致,不能取代 SNI
WebSocket path符合伺服器端的 WebSocket 入口設定路徑與大小寫依伺服器設定為準,不影響憑證有效期限

介面確認:在 v2rayN 編輯目前節點,檢查位址、連接埠、傳輸方式與 TLS 設定;在 v2rayNG、v2flyNG 中開啟對應節點的編輯畫面,確認伺服器名稱相關欄位。不同版本的版面不盡相同,應依欄位用途與實際產生的核心設定判斷,不要只看輸入框的位置。

判斷順序:先比對憑證名稱,再檢查 HTTP 路由

處理順序:出現名稱不符時,先修正 SNI 與憑證的對應關係;TLS 已成功但出現 HTTP 狀態錯誤時,再排查 Host 與路徑。只修改 Host,無法修復握手階段的憑證名稱錯誤。

憑證鏈與伺服器:瀏覽器能開啟,不代表核心一定驗證通過

信任鏈檢查:伺服器通常須傳送網站憑證及必要的中繼憑證,用戶端再將憑證鏈連結至受信任的根憑證。瀏覽器可能快取中繼憑證,或採用不同的信任機制,因此「瀏覽器能開啟」只能當作線索,不能取代代理核心的驗證結果。

  1. 確認 TLS 終止位置:確認 TLS 是由反向代理、負載平衡入口,還是代理核心直接處理。憑證應更新在實際處理握手的那一層。
  2. 確認完整憑證鏈:檢查伺服器是否載入完整憑證鏈,以及憑證與私鑰是否相符。更新憑證後,確認設定已重新載入,而不只是替換磁碟上的檔案。
  3. 確認多個入口:若網域有多個位址或入口,請逐一檢查回傳的憑證。只要有一個入口仍使用舊憑證,就可能造成間歇性連線失敗。
  4. 確認本機信任狀態:將作業系統與用戶端更新至仍受維護的版本,並確認是否有企業網路 TLS 檢查機制。排查問題時不要任意安裝來源不明的根憑證。

誤用 allowInsecure:略過驗證不等於修復憑證

開關用途:在常見 TLS 設定中,allowInsecure: true 會略過一般的憑證鏈與名稱驗證,讓連線失去原有的伺服器身分保證。這無法修復 TCP 無法連線、連接埠錯誤、伺服器拒絕握手或代理驗證失敗,也不應作為長期設定。

{
  "security": "tls",
  "tlsSettings": {
    "allowInsecure": false
  }
}

片段範圍:上方僅示範常見 streamSettings 中的 TLS 驗證開關,並非完整節點設定,也未包含實際的 serverName、傳輸層與驗證參數。請勿用這段內容覆蓋現有設定;應在目前節點的 TLS 設定中確認未啟用「允許不安全連線」或「略過憑證驗證」。

處理原則:恢復身分驗證後,再確認修復完成

驗收條件:保持憑證驗證啟用,讓同一節點重新連線且不再出現原本的錯誤,並確認目標服務可正常使用。只把日誌中的憑證錯誤隱藏起來,不算完成修復。

核心與協定差異:一般 TLS 與 REALITY 不適用同一套參數

協定區分:VMess、VLESS 是代理協定,是否使用 TLS 取決於傳輸層與安全層設定。不能看到 VLESS 就預設一定使用一般 TLS,也不能因介面有伺服器名稱欄位,就把所有安全層問題都當成憑證過期處理。

使用情境優先確認項目避免的錯誤操作
v2rayN 桌面設定目前節點實際使用的核心、TLS 欄位與底層日誌把用戶端名稱當成核心名稱,套用不相符的參數
v2rayNG 的 Xray 設定節點安全層、伺服器名稱、憑證驗證狀態把一般 TLS 的處理方式直接套用到 REALITY
v2flyNG 的 v2fly 設定目前核心支援的協定與欄位匯入依賴 Xray 專屬功能的設定後,忽略相容性問題
Xray 的 REALITY 設定伺服器指定的 serverName、公鑰與 shortId 等參數用 allowInsecure 取代 REALITY 所需的參數檢查

REALITY 注意事項:REALITY 使用的驗證機制不同於一般 TLS 憑證部署,設定必須與伺服器端成套相符。系統時間仍值得檢查,但遇到相關錯誤時,應先確認安全層類型,再依對應核心要求核對參數;不要要求管理者只靠更換一般網站憑證解決所有問題。

最後複測:每次只修改一項,記錄「原始錯誤—修改項目—新日誌」。依序從系統時間、SNI、憑證鏈、伺服器與安全層相容性逐步縮小範圍;TLS 成功後仍無法連線,再檢查代理驗證、路由分流與 DNS,不要繼續關閉安全設定。

  1. 保留基準:記錄目前欄位與原始錯誤,並將訂閱內容保存在可信的位置。
  2. 逐項驗證:修正一個項目後重新連線,確認日誌是這次測試產生的。
  3. 還原設定:撤銷暫時的除錯變更,並保持憑證驗證啟用。
  4. 確認設定持續有效:重新啟動用戶端;若使用訂閱,請檢查下次更新是否再次覆寫修正。
用戶端安裝檔