适用于 v2rayNG 中启用普通 TLS 的节点:先在日志里分清证书校验失败与连接超时,再检查 Android 自动时间、节点的服务器名称及证书信任链。文中同时说明 v2rayN 的对应检查位置,以及为什么不应把跳过证书验证当作长期修复。若节点使用 REALITY,应转查它自己的认证参数,不能直接套用普通 TLS 的证书处理步骤。
1. 打开日志,确认失败发生在哪一步
在 v2rayNG 主界面打开侧边菜单,进入「日志」。记录当前时间,返回主界面停止连接,再启动同一个节点并发起一次网页请求。回到日志,只看这次操作之后新增的错误。不同版本的菜单布局可能变化,以「日志」入口为准。
不要只截取最后一行 failed to process outbound traffic。这通常是上层汇总信息,真正原因往往跟在 x509、tls 或 dial tcp 后面。保存从连接目标到最内层原因的一整条错误链,才能判断应该改时间、改字段,还是联系服务端维护者。
这个流程用于理解普通 TCP 加 TLS 的节点。出现 connection refused 或 i/o timeout 时,可能还没有拿到证书;出现 x509 错误时,通常已经走到证书校验阶段。延迟测试有数值也不代表 TLS 验证通过,尤其是只测 TCP 建连的测试方式。
2. 先同步 Android 日期与时间
打开 Android「设置」→「系统」→「日期和时间」,启用「自动设置时间」和「自动设置时区」。部分设备将入口放在「更多设置」或「常规管理」下,可在系统设置中搜索「日期和时间」。完成后回到 v2rayNG,停止并重新启动连接,让内核重新握手。
- 检查日期和年份:长时间关机或手动调整时间后,设备可能落在证书有效期之外。误差不一定要很大,刚续签的证书也可能因几分钟偏差被判定为尚未生效。
- 确认时间确实已同步:仅打开开关不代表同步成功。先确保设备有正常网络,再核对系统显示的日期与当前时间。
- 读取日志里的两个时间:有效期错误常包含客户端当前时间以及证书的起止时间。当前时间明显不对,先修设备;当前时间正确但证书已经过期,应由服务端续签。
时区影响屏幕如何显示时间,证书校验比较的是实际时间点。单纯把时区从一个地区切到另一个地区,通常不能修复错误的系统时钟。不要为了让过期证书暂时通过而回拨日期,这还会影响订阅请求和其他安全连接。
3. 对照服务器地址、SNI 与传输 Host
在 v2rayNG 节点列表点击该节点的编辑图标,检查「地址」「端口」「TLS」以及「SNI」或「服务器名称」字段;采用 WebSocket 时,再检查它的「Host」和「路径」。保存前先保留原始配置,订阅节点也可以复制一份用于对照,避免把一次试验覆盖到全部节点。
| 字段 | 实际用途 | 检查方法 |
|---|---|---|
| 地址与端口 | 决定连接到哪个服务入口 | 按节点提供方的数据填写,不因证书报错自行换端口 |
| SNI / serverName | 用于 TLS 服务器名称指示,并通常作为证书名称验证依据 | 填写提供方指定的名称,证书需覆盖该名称 |
| WebSocket Host | 用于 HTTP 请求及反向代理的站点路由 | 与传输设置对照,不把它当成证书验证开关 |
| WebSocket 路径 | 决定反向代理转发到哪个服务 | 检查开头斜杠、大小写及完整路径 |
所谓「伪装域名」不是一个足够精确的字段名。有的说明把 SNI 和 HTTP Host 都这样称呼,但它们位于不同层。两者可以相同,也可能按服务端架构分别设置;应逐项核对,不能看到两个域名就强行改成一致。
如果节点地址填写 IP,而证书只包含域名,就需要正确的服务器名称参与校验。只有在证书包含对应 IP 的情况下,按 IP 校验才可能通过。SNI 字段通常填写纯主机名,不加 https://、端口或路径。留空时的默认行为还会受内核和节点类型影响,不要依赖猜测。
端口为 443 不等于一定启用了正确的 TLS 服务。连接到错误的反向代理入口,同样可能收到其他站点的证书。VMess、VLESS 是代理协议,TLS 是传输安全层;仅把 VMess 换成 VLESS,并不能修复错误的证书名称。
4. 按错误原文区分证书与服务端问题
下面的片段可能出现在较长的错误链中,前后包装会随内核版本变化。按最具体的那一条处理,不要只根据「握手失败」四个字决定修改方向。
报错:x509: certificate has expired or is not yet valid
原因:当前时间不在证书有效期内。解法:先同步设备时间;时间正确时,请维护者核实服务端实际提供的证书是否过期,以及续签后是否重新加载。
报错:x509: certificate signed by unknown authority
原因:当前校验器无法建立可信的证书链,可能是中间证书缺失或使用了未受信任的签发机构。解法:让维护者检查完整证书链;仅在明确的自建环境中,按内核支持方式配置经过核实的信任证书。
报错:x509: cannot validate certificate for
原因:若后文包含 because it doesn't contain any IP SANs,表示正在按 IP 验证,但证书没有对应 IP 条目。解法:核对提供方指定的服务器名称,不要把连接 IP 直接填入 SNI。
报错:remote error: tls: handshake failure
原因:对端拒绝了握手,可能涉及 SNI、TLS 参数或服务端策略,不能仅凭这一行认定证书过期。解法:先恢复订阅原始设置,再由维护者结合同一时间的服务端日志定位拒绝原因。
报错:tls: first record does not look like a TLS handshake
原因:目标返回的数据不像 TLS 记录,常见于连到了明文服务或错误端口。解法:核对端口与传输安全类型,确认该入口确实提供 TLS,不能直接关闭 TLS 碰运气。
如果时间、名称都正确,且同一节点在不同网络下均报相同证书错误,服务端证书配置的优先级就更高。相反,只有某个 Wi-Fi 网络失败时,先完成该网络的联网认证,再检查是否存在网络侧拦截。浏览器能打开某个 HTTPS 页面,只能作为参考,不能证明节点内核看到的证书链完全相同。
5. allowInsecure 保持关闭,分别处理 TLS 与 REALITY
回到节点编辑页,找到「跳过证书验证」「允许不安全连接」或对应的 allowInsecure 选项,正常使用时保持关闭。这个选项放宽的是服务器身份校验,不会补齐证书链、续签证书,也不会把错误的传输入口变正确。
{
"tlsSettings": {
"allowInsecure": false
}
}
这只是普通 TLS 配置中的局部字段示意,不是可以直接导入的完整节点。使用图形界面时,优先修改对应开关;不要把这段内容粘贴覆盖整个配置文件。开启跳过验证后暂时可用,只说明问题可能位于验证环节,并不代表连接到了预期服务器。
- 普通 TLS:重点核对有效期、服务器名称、证书链和信任来源;修正后应在验证开启的状态下使用。
- REALITY:检查节点提供方要求的服务器名称、认证公钥或相应凭据、shortId 等参数。具体界面字段随版本变化,应以原始订阅和当前客户端为准。
- 协议支持:v2rayNG 使用 Xray 内核;v2flyNG 使用 v2fly 内核。不要假定后者能直接承接前者的 REALITY 配置。
6. 保存后只改一个变量,再做完整验证
每次只调整一项:先时间,再服务器名称,再证书链。保存节点后停止并重新启动连接,重新发起请求,然后查看新日志。若同时更改 DNS、路由分流、端口和 TLS 开关,即使恢复连接,也无法知道哪个变化起作用。
- 保留一份原始节点,记录客户端版本、内核版本和出错时间,便于复现。
- 在证书验证保持开启的情况下,访问原先失败的目标,确认不是缓存页面。
- 检查新日志是否仍出现同类
x509或tls错误,不把单次延迟结果作为唯一依据。 - 订阅更新后再次核对字段。若手动修正被覆盖,应由订阅维护者修正源配置。
桌面端使用 v2rayN 时,双击节点进入编辑窗口,对照 TLS 的服务器名称及允许不安全连接选项;在日志区域或日志窗口查看内核输出。Windows 可从「设置」→「时间和语言」→「日期和时间」执行时间同步。菜单名称随版本变化,但时间、证书名称、信任链这三项检查原则不变。
7. TLS 证书排错常见问题
时间已经自动同步,为什么仍提示证书过期?
先看错误中记录的当前时间是否正确。如果正确,就核对证书到期时间。服务端可能已续签文件,却仍由反向代理加载旧证书;把错误时间交给维护者检查实际监听入口,而不是继续调整手机日期。
SNI 和 WebSocket Host 必须填同一个域名吗?
不一定。SNI 用于 TLS 层,Host 用于 HTTP 路由。打开节点编辑页,分别与提供方的原始参数核对;没有明确配置依据时,不要用其中一个字段覆盖另一个。
跳过证书验证后能连,能一直这样开着吗?
不建议。先关闭该开关,再按错误检查设备时间、服务器名称和证书链。如果只有关闭验证才能连接,应让维护者修复证书或提供明确的受信任配置,而不是长期绕过身份检查。
节点能连,只有更新订阅时报证书错误怎么办?
先分清订阅 HTTPS 请求与节点 TLS 握手。这是两条连接,可能使用不同的网络路径和信任机制。核对订阅地址是否有效、设备时间是否正确,并查看更新时的错误;修改节点 SNI 通常不能直接修复订阅服务器的证书。
换 DNS 能解决所有 TLS 握手失败吗?
不能。只有解析错误或解析到了错误入口时,DNS 才是关键线索。明确的证书过期或名称不匹配应先修对应配置;使用自定义路由分流时,还要确认测试请求确实经过正在排查的那个节点。