TLS 握手错误怎么办?证书无效、SNI 与系统时间不同步
客户端日志出现TLS handshake failed、certificate verify failed,或浏览器提示证书无效、连接不是私密连接?本文解释TLS握手的作用,给出系统时间同步、客户端更新、检查SNI与跳过证书验证风险等排查方法。
代理客户端日志里出现 TLS handshake failed、certificate verify failed,或者浏览器显示“你的连接不是私密连接”“证书无效”,都与 TLS 握手 有关。这类错误看起来很技术化,但大多数情况下处理起来并不复杂。
TLS 握手是什么
TLS 是互联网上最常用的加密协议,HTTPS 网站和很多代理协议(如 Trojan、VLESS + TLS)都依赖它。建立连接前,客户端和服务器需要先“握手”:交换加密参数、验证服务器证书。握手失败,连接就无法建立。
原因一:系统时间不准(最常见)
证书都有有效期,客户端会用本机时间判断证书是否有效。如果系统时间偏差太大,所有证书都可能被判定为“已过期”或“尚未生效”。
处理方法:在系统设置中开启“自动设置时间”和“自动设置时区”,并手动同步一次。手机、电脑都要检查。
原因二:客户端或内核版本过旧
机场升级了加密参数或协议(例如启用新的 TLS 指纹、Reality 等),旧版本客户端无法完成握手。
处理方法:更新客户端到最新版本,v2rayN 用户还需要同时更新内核。更新后重新导入订阅。
原因三:SNI 或伪装域名设置异常
部分协议在握手时会发送一个“伪装域名”(SNI)。如果订阅中的配置与服务器不匹配,或你手动修改过节点参数,就会握手失败。
处理方法:不要手动修改节点参数,直接从机场重新导入最新订阅,让配置与服务器保持一致。
原因四:网络环境干扰
某些网络环境(如公共 Wi-Fi、部分公司网络)会对加密连接进行干扰或检测,导致握手失败或证书异常。
处理方法:换一个网络(例如手机热点)测试。如果换网络后恢复,问题在原网络环境,请遵守该网络的使用规定。
原因五:单个节点故障
如果只有个别节点报 TLS 错误,其余节点正常,通常是该节点的证书过期或配置有误。换其他节点使用,并向机场客服反馈。
关于“跳过证书验证”
很多客户端提供“跳过证书验证”(allowInsecure)选项,开启后可以绕过证书错误,但代价是客户端不再验证服务器身份,存在被中间人攻击的风险。除非机场明确要求,否则不要开启;更好的做法是按上面的步骤找到真正的原因。
排查速查表
| 现象 | 优先检查 |
|---|---|
| 所有节点都报 TLS 错误 | 系统时间、客户端版本 |
| 只有新协议节点报错 | 客户端 / 内核版本 |
| 只有个别节点报错 | 节点故障,换节点并反馈 |
| 换网络后恢复 | 原网络环境干扰 |
| 浏览器提示证书无效 | 系统时间、节点、网站本身 |
更多网络问题的排查方法见 网络问题排查 和 客户端教程中心。
如何查看客户端日志
遇到连接问题时,客户端日志是最直接的线索。Clash Verge Rev 可在“日志”页查看实时记录,v2rayN 在主界面下方显示日志。把日志级别调到“信息”或“调试”,复现一次问题,就能看到具体是哪一步出错。向机场客服反馈时附上相关日志片段,问题会更快得到解决。
常见问题
浏览器提示“你的连接不是私密连接”,是代理的问题吗?
可能是系统时间不准、网络被劫持或网站证书本身有问题。先同步系统时间并换一个节点测试;如果只有某个网站出现,可能是该网站证书配置问题。
客户端里的“跳过证书验证”可以开吗?
不建议默认开启。它会让客户端不再校验服务器证书,存在被中间人攻击的风险。只有在机场明确说明需要时才开启,并优先选择不需要该选项的节点。