· 故障排除 · 約 10 分鐘

V2Ray TLS 握手失敗、憑證錯誤排查:系統時間與 SNI 設定

整理 TLS 錯誤常見原因:裝置時間不同步、SNI 與偽裝網域不符、誤用 allowInsecure,並依錯誤訊息提供對應的修正方法。

本文速覽

適用於 v2rayN 桌面版、v2rayNG 與 v2flyNG Android 版連線至 TLS 節點時發生的握手與憑證錯誤。先從核心記錄判斷失敗階段,再依序檢查裝置時間、節點位址、SNI、憑證鏈與伺服器監聽設定;不要把略過憑證驗證當成修復方式。本文也會區分一般 TLS 與 REALITY,避免混用兩者的參數。

一、先判斷錯誤發生在哪個連線階段

v2rayN 是桌面用戶端介面,實際建立連線並輸出 TLS 錯誤的是它啟動的代理核心。v2rayNG 使用 Xray 核心,v2flyNG 使用 V2Fly 核心。不同核心與版本的記錄用詞可能不同,但排查順序大致相同:先確認失敗的是訂閱下載、節點連線,還是瀏覽器存取目標網站。

解析節點位址 連線至目標連接埠 傳送握手參數 驗證伺服器憑證 建立代理連線

如果按下「更新訂閱」時出現憑證錯誤,先檢查訂閱網址所連到的 HTTPS 服務;此時修改特定節點的 SNI 通常無效。如果只有瀏覽器提示網站憑證異常,而核心記錄顯示節點連線成功,就該檢查目標網站、裝置上的 HTTPS 檢查軟體或網路登入頁面,不能直接認定是節點憑證有問題。

二、依記錄中的錯誤訊息選擇排查方向

以下保留常見的英文錯誤片段,方便逐字比對記錄。附帶的網域、日期與位址會因環境而異,不必要求整行完全相同。每次只調整一項設定,儲存後重新連線,再查看最內層錯誤是否改變。

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

原因與解法:裝置目前時間不在憑證有效期限內,可能是裝置時鐘錯誤,也可能是伺服器憑證已過期。先同步裝置時間,再比對記錄中的有效期限;若時間正確仍出現錯誤,就需要由伺服器更新並載入新憑證。

錯誤:x509: certificate is valid for …, not …

原因與解法:憑證所包含的名稱與用戶端要驗證的名稱不一致。請核對節點 SNI、憑證的 SAN 網域與伺服器虛擬主機設定,不要直接把節點 IP 當成憑證網域。

錯誤:x509: certificate signed by unknown authority

原因與解法:用戶端無法建立可信任的憑證鏈,常見原因包括缺少中繼憑證、使用自簽憑證,或裝置的信任存放區異常。公用憑證服務應補齊憑證鏈;自建私有服務則應依既定安全流程部署可信任的根憑證。

錯誤:remote error: tls: handshake failure

原因與解法:對端拒絕了握手,但單憑這行訊息無法確定原因。請對照伺服器記錄,檢查 SNI、TLS 版本、用戶端憑證需求與監聽協定,並確認請求是否抵達預期的服務。

錯誤:tls: first record does not look like a TLS handshake

原因與解法:連線的連接埠傳回了非 TLS 資料。請確認該連接埠是否實際提供 TLS,並檢查反向代理與轉送規則是否將流量導向未加密的服務。

EOF 和 connection reset by peer 也不能單獨證明 SNI 設定錯誤。這些訊息只表示連線已結束或遭重設,請搭配伺服器連線記錄、連接埠連通性,以及相同節點在其他網路環境的結果,進一步縮小問題範圍。

三、系統時間不準:先同步時間,再檢查有效期限

TLS 驗證會依據裝置實際的系統時間,判斷憑證是否仍在有效期限內。若時間早於憑證生效日或晚於到期日,驗證都會失敗。時區顯示錯誤不一定代表系統時間戳有誤;請以自動同步結果與實際日期為準,不要只把時區改成其他地區。

  1. 開啟時間設定

    在 Windows 11 中前往「設定」→「時間與語言」→「日期與時間」,檢查年份、日期與時間。其他桌面系統請前往系統設定中的日期與時間頁面。

  2. 執行自動同步

    開啟「自動設定時間」,再於「其他設定」中點選「立即同步」。若同步失敗,先檢查網路與時間服務是否可連線,不要反覆手動調整時鐘試誤。

  3. 檢查 Android 時間

    在 Android 裝置中開啟「設定」,搜尋「日期與時間」,並啟用「自動設定時間」與自動設定時區。不同系統的上一層選單可能名為「系統」或「其他設定」,請以裝置上的搜尋結果為準。

  4. 重新建立連線

    停止並重新啟動用戶端連線,再重新發出一次請求。若仍出現有效期限錯誤,請比對記錄中的目前時間、憑證生效時間與到期時間,確認是否需要伺服器更新憑證。

443
常見 TLS 伺服器連接埠;節點請以實際設定為準
123 / UDP
NTP 常用連接埠,不是代理節點連接埠
TLS 1.2 / 1.3
常見 TLS 版本,不是用戶端版本號

如果裝置每次關機後,日期都會重設為多年以前,還需檢查硬體時鐘、電池或系統時間服務。若本機時間正常,且多台裝置連線到同一節點時都顯示憑證過期,應優先檢查伺服器憑證,而不是逐一修改每台裝置的安全選項。

四、分別核對 SNI、節點位址與 Host

節點位址決定要連線的主機;SNI 是 TLS 握手時傳送的伺服器名稱,伺服器可據此選擇網站與憑證。一般 TLS 設定中的 serverName 通常也會用於憑證名稱驗證。WebSocket 的 Host 則屬於 HTTP 要求標頭,作用於不同層;不能只因這三個欄位看起來像網域,就認定它們必須相同。

欄位用途排查重點
位址與連接埠確認實際連線入口網域解析、連接埠監聽與轉送目標
SNI / serverName選擇 TLS 虛擬主機,通常也作為驗證名稱確認與伺服器設定及憑證 SAN 相符
WebSocket Host選擇 HTTP 虛擬主機或路由確認與反向代理接收的 Host 相同
WebSocket Path選擇 HTTP 要求路徑確認大小寫、開頭斜線與伺服器設定相符

在 v2rayN 主畫面中按兩下目標節點,開啟節點編輯視窗,找到 TLS 區域的「SNI」或「ServerName」欄位,依服務提供者提供的值進行核對;不同版本顯示的欄位名稱可能略有不同。v2rayNG、v2flyNG 則可從節點項目的編輯入口檢查相應的 TLS 參數。先記下原始值,不要同時修改位址、連接埠、SNI 與傳輸方式。

五、allowInsecure 與憑證鏈:恢復驗證,不要略過錯誤

allowInsecure 是核心 TLS 設定中常見的略過憑證驗證選項。啟用後,網域不符、憑證過期或信任鏈錯誤可能暫時不再阻止連線,但連線成功不代表對端身分可信。一般公用網路上的 TLS 節點應維持憑證驗證開啟,並修正真正的憑證問題。

如果同一個節點在舊裝置上顯示 unknown authority,但在新裝置上正常,可以檢查舊裝置的系統更新與信任存放區;同時也要排除伺服器缺少中繼憑證,或另一台裝置剛好已有快取的情況。安全軟體執行 HTTPS 檢查時也可能使用不同的簽發者,請依組織管理政策確認,而不是直接關閉所有防護。

六、使用命令區分連接埠不通與 TLS 設定錯誤

以下命令僅供有權限排查的一般 TLS 服務使用。請將範例網域替換為實際節點位址與 SNI,連接埠也應使用節點的實際設定;這些命令並非代理協定連線測試。Windows PowerShell 可先檢查 TCP 連接埠;若環境已安裝 OpenSSL,則可進一步檢視握手與憑證驗證結果。

# PowerShell:檢查節點 TCP 連接埠是否可連線
Test-NetConnection -ComputerName node.example.net -Port 443

# OpenSSL:連線至節點位址,傳送並驗證指定的伺服器名稱
openssl s_client -connect node.example.net:443 -servername edge.example.net -verify_hostname edge.example.net -verify_return_error -showcerts

TcpTestSucceeded: True 只表示 TCP 連線已建立,無法證明憑證可信、代理驗證正確或路由可用。OpenSSL 的 -servername 用於傳送 SNI,-verify_hostname 用於明確驗證名稱;兩者用途不同,只加上前者不足以取代完整的名稱驗證。

  1. TCP 連線失敗時,先檢查位址、連接埠、服務監聽狀態與防火牆,不要繼續反覆調整憑證名稱。
  2. TCP 連線成功但收到非 TLS 資料時,請檢查連接埠映射與反向代理入口是否設定錯誤。
  3. TLS 回報名稱或信任鏈錯誤時,請檢查憑證 SAN、完整憑證鏈與本機信任存放區。
  4. TLS 驗證通過但用戶端仍連線失敗時,請繼續核對代理協定、驗證參數、WebSocket 路徑或其他傳輸參數。

七、修復後重新測試與常見問題

重新測試時,維持相同節點、網路與目標網頁,先關閉自動切換,再重新啟動連線。確認新記錄不再出現原本的憑證錯誤後,再恢復日常路由設定。若需要服務提供者協助,提供錯誤時間、錯誤關鍵字、使用的核心與已完成的檢查即可,請勿傳送完整訂閱連結。

同步時間後仍提示憑證過期?

先確認系統時間同步確實成功,再查看記錄中的憑證到期時間。若憑證已過期,請聯絡伺服器管理者更新並重新載入憑證;同時核對 SNI,避免實際取得其他虛擬主機的舊憑證。

勾選略過憑證驗證就能連線,可以一直開著嗎?

不建議長期維持此設定。請先恢復驗證,再分別檢查有效期限、憑證 SAN 與完整憑證鏈。略過驗證後能連線,只表示檢查被繞過,無法證明連線到的是預期伺服器。

延遲測試有數值,為什麼網頁還是打不開?

不同測試可能只測 TCP,或使用不同的要求路徑。請查看實際網頁要求對應的核心記錄;若 TLS 已通過,再檢查系統代理、分流規則與 DNS,並可參考站內故障排除。

更新訂閱後,修正好的 SNI 又變回原值?

先比較更新前後的節點欄位,確認訂閱來源是否持續提供錯誤值。可以複製節點作為暫時比對,保留原始設定並聯絡服務提供者修正訂閱來源,避免每次更新後都得手動修改。

換了用戶端就正常,原本的用戶端需要重新安裝嗎?

先比對兩邊的節點欄位、核心版本、系統時間與信任存放區。同名節點不一定採用相同參數;先釐清差異再更新用戶端,通常比直接重新安裝更容易找出問題。

建議依序確認:連線入口正確、系統時間正確、SNI 與憑證相符、憑證鏈可信、代理參數一致。逐項記錄檢查結果,比同時更換 DNS、連接埠、網域與安全選項更容易找出根本原因。想了解欄位含義,可查閱術語表;首次匯入節點,則請依照用戶端設定教學操作。

下載v2rayN · 選擇平台