V2Ray TLS 憑證錯誤排解:系統時間不同步與 SNI 設定錯誤

連線時出現 x509 或 certificate 錯誤?從系統時間、SNI 與偽裝網域是否相符,以及是否誤用略過憑證驗證這三處著手,逐步找出 TLS 交握失敗原因。

本文重點

適合在 v2rayN、v2rayNG 或 v2flyNG 日誌中看到憑證驗證失敗的使用者。先查看底層錯誤,再同步系統時間、核對 TLS 的 SNI 與憑證名稱,最後檢查伺服器端憑證鏈。全程保持憑證驗證開啟,每次只調整一項設定,避免把暫時連線成功誤認為問題已排除。

先看日誌:分辨憑證錯誤與連線逾時

節點顯示無法連線,不一定是 TLS 問題。TLS 交握發生在底層連線建立後、傳輸代理協定資料前;只有日誌明確出現 x509、certificate 或具體的交握失敗原因,才適合從憑證方向排查。單獨出現 context deadline exceeded 只表示等待逾時,不能據此判定憑證已過期。

查看連線日誌核對系統時間核對憑證名稱檢查憑證鏈重新連線確認

在 v2rayN 主視窗查看底部的日誌區域;如果目前版本將日誌放在獨立入口,開啟「日誌」後再重新連線一次。在 v2rayNG 主畫面側邊選單開啟「日誌」,停止服務後重新啟動,找到剛產生的記錄。v2flyNG 也應查看本次連線的核心日誌,不要把先前的失敗記錄當成目前結果。不同版本的入口位置可能不同,請以實際介面為準。

根據 x509 錯誤原文判斷檢查方向

以下列出常見的實際錯誤片段。完整日誌可能包含核心前綴、憑證名稱或日期,措辭也可能隨核心版本而異。請查看最內層的錯誤原因;尤其是有效期限錯誤,必須比對其中的目前時間與憑證有效期限,不能只看到「已過期」就要求更換節點。

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

原因與處理方式:用戶端判定憑證不在有效期限內。先核對系統時間;若時間正確但錯誤仍重現,請伺服器維護者檢查憑證的起迄日期及續期部署狀況。

錯誤:x509: certificate signed by unknown authority

原因與處理方式:憑證鏈無法連結至受信任的根憑證,可能是缺少中繼憑證、使用私有憑證,或系統信任存放區有問題。請確認憑證來源及伺服器端提供的完整憑證鏈;受管理的裝置也需檢查網路的憑證替換政策。

錯誤:x509: cannot validate certificate for 192.0.2.1 because it doesn't contain any IP SANs

原因與處理方式:用戶端正以 IP 位址驗證一張未包含相符 IP 類型 SAN 的憑證。此處位址僅供文件示範;實際設定應依伺服器提供的資料,填入憑證涵蓋的 TLS 名稱,而非任意更換網域。

錯誤:remote error: tls: handshake failure

原因與處理方式:遠端中止 TLS 交握,不一定是本機憑證驗證失敗。請核對 SNI、連接埠、TLS 設定及伺服器端的連線要求,再請維護者比對同一時間的伺服器日誌。

如果日誌指出憑證適用於某個名稱,卻不適用於目前名稱,請優先檢查 SNI 和驗證名稱。若只有 EOF 或連線遭重設,也可能是該連接埠上的服務不接受目前的交握方式,不應直接歸因於系統時間。

同步系統時間:先校正時鐘,再判斷憑證是否過期

憑證包含生效時間與到期時間。裝置時間若落在這段期間之外,即使伺服器端設定正常,也會被判定為尚未生效或已過期。切換雙系統、主機板電池異常、長時間未連線及手動調整日期,都可能造成時間偏差。時區主要影響時間顯示;只修正時區,並不代表系統記錄的實際時間已正確。

  1. 核對日期與時間

    先檢查年、月、日及小時。在 Windows PowerShell 執行 Get-Date -Format o,查看包含時區偏移的完整時間,再與可信任的時鐘比對。

  2. 同步時鐘

    在 Windows 11 開啟「設定」→「時間與語言」→「日期與時間」,啟用「自動設定時間」,再於「其他設定」中按一下「立即同步」。若同步失敗,請先排除網路或時間服務問題。

  3. 檢查 Android 時間設定

    Android 常見路徑為「設定」→「系統」→「日期與時間」,開啟「自動設定時間」及「自動設定時區」。各廠牌選單可能不同,可在設定中搜尋「日期和時間」,並確認顯示時間已更新。

  4. 重新連線

    同步完成後,停止並重新啟動用戶端連線,查看新產生的日誌。如果目前時間正確,而憑證到期日確實已過,應由伺服器端續期並重新載入憑證。

Windows 也可透過 w32tm /query /status 查看時間同步來源與狀態;若命令回報服務未執行,應先檢查 Windows Time 服務,而不是不斷重新啟動代理核心。受組織政策管理的裝置,應聯絡管理員修復指定的時間來源,不要自行覆寫管理政策。

SNI 與偽裝網域:分別核對位址、名稱和 Host

SNI 是 TLS 交握中用來告知伺服器目標名稱的擴充功能,伺服器可據此選擇憑證或虛擬主機。通常填入的 TLS 伺服器名稱也會用於憑證名稱驗證,但部分核心支援另外指定驗證名稱,因此還要檢查是否有明確覆寫。伺服器提供資料中的「偽裝網域」並非定義一致的欄位,必須先確認它指的是 SNI、HTTP Host,還是其他傳輸參數。

設定項目實際用途檢查重點
位址與連接埠決定要連線至哪個伺服器入口。位址可以是網域或 IP;連接埠必須與伺服器端一致,不要因為使用 TLS 就一律改成 443。
SNI / serverName通常用來傳送 TLS 名稱,並作為憑證名稱驗證的依據。填入伺服器要求的純網域名稱,不含通訊協定前綴、路徑或連接埠。
憑證 SAN列出憑證允許驗證的 DNS 名稱或 IP 位址。驗證名稱必須包含在憑證中;萬用字元 *.example.com 通常不涵蓋 example.com 或更深層的子網域。
WebSocket Host用於 TLS 之後的 HTTP 請求路由。依傳輸設定填寫;修改 Host 無法直接修正先前發生的憑證名稱不符問題。
WebSocket Path指定 HTTP 升級請求的路徑。請保留伺服器提供的路徑;路徑錯誤通常與憑證驗證無關。

在 v2rayN 中雙擊目標節點,進入節點編輯視窗,核對 TLS 區域中的「SNI」或相應的伺服器名稱欄位;在 v2rayNG 中點選節點右側的編輯圖示,檢查 TLS 設定中的「SNI」。欄位名稱可能因版本而異,請以 TLS 區域為準,不要把傳輸設定中的「Host」當成同一項。v2flyNG 也應使用符合目前核心及節點協定的欄位。

例如,伺服器明確要求使用 edge.example.com 作為 TLS 名稱時,此欄不可填入 https://edge.example.com/。此處網域僅用來說明格式,並非可用的節點參數。伺服器位址是 IP 不一定有問題:只要連線目標正確,且 TLS 使用經授權並受憑證涵蓋的名稱,就不必勉強把位址欄也改成該網域。

結論:先確認 TLS 名稱,再調整傳輸參數

日誌明確指出名稱不符時,先比對伺服器提供的 SNI 與憑證 SAN;只有憑證驗證通過後仍發生 HTTP 或升級失敗,才繼續核對 Host 和路徑。

保持憑證驗證:檢查伺服器端憑證鏈與網路環境

「略過憑證驗證」可能顯示為 allowInsecure 或類似選項。啟用後,用戶端可能不再正常檢查憑證鏈或名稱;這不代表伺服器身分已獲確認,也沒有修正原本的設定問題。排查時應保持此選項關閉;若先前已啟用,請恢復驗證,再依重新出現的確切錯誤找出原因。

本文主要說明一般 TLS 憑證驗證。若節點安全類型為 REALITY,請進一步核對伺服器提供的伺服器名稱、公鑰、短識別碼及用戶端核心支援情況,不可直接套用一般憑證續期的處理方式。v2rayNG 使用 Xray 核心,v2flyNG 使用 V2Fly 核心,兩者支援的協定與安全參數並不完全相同,不能只更改用戶端名稱就認定設定一定相容。

恢復連線後的檢查與常見問題

每次修改後都應重新建立連線,並查看新日誌。舊連線仍在使用,或訂閱更新覆蓋手動參數,都可能讓前後結果看似矛盾。不要一次修改時間、SNI、DNS 和路由;每一步都記下修改項目及新錯誤,才能確認是哪項設定生效。

時間已同步,為什麼仍顯示憑證過期?

比對錯誤中的目前時間與憑證到期時間。如果本機時間正確,且憑證確實已過期,請將遮蔽敏感資訊後的錯誤訊息和發生時間提供給維護者,請對方檢查續期結果及目前使用的憑證。

瀏覽器能正常開啟網域,為什麼用戶端仍報錯?

瀏覽器可能連到不同連接埠或入口,也可能使用不同的信任存放區。請比對節點位址、連接埠及 SNI,不要把瀏覽器能開啟首頁當成代理入口憑證正常的證據。

修改 SNI 後可以連線,更新訂閱後又失敗怎麼辦?

重新編輯節點,確認該欄位是否被訂閱內容覆蓋。請向提供者反映訂閱中的 TLS 參數;若需暫時比對,可保留獨立的測試設定,但之後仍應以修正後的訂閱為準。

關閉驗證後才能連線,是否代表問題已排除?

不是。請重新關閉「略過憑證驗證」,依錯誤類別修正時間、名稱或信任鏈。只有在正常驗證開啟的情況下仍能重新連線,才算解決原本的憑證問題。

  1. 確認系統自動同步時間正常,日期與時區顯示正確。
  2. 確認節點的 TLS 名稱與伺服器資料一致,且未略過憑證驗證。
  3. 停止後重新連線,確認新日誌不再出現同類憑證錯誤。
  4. 若仍無法連線,請提供用戶端與核心版本、發生時間、已檢查項目及遮蔽敏感資訊後的底層錯誤,避免直接傳送完整訂閱內容。
下載用戶端