Shadowrocket 添加 Trojan 节点:Password、SNI 与 Allow Insecure 填写要点

先简要介绍 Trojan 借助 TLS 传输的原理,再说明在 Add Server 中填写 Address、Port、Password、SNI 的对应关系,以及 Allow Insecure 开关的风险。

本文速览

添加 Trojan 时,Address 决定连接到哪里,Port 决定连接哪个端口,Password 用于协议认证,SNI 用于 TLS 握手中的服务器名称。四项应按用户已有配置逐项对应,Allow Insecure 通常保持关闭。本文适合手动填写节点或排查导入后连接失败的用户,重点区分网络不可达、证书验证失败与密码错误,避免用跳过证书验证掩盖配置问题。

Trojan 与 TLS:先区分连接、证书和认证

Trojan 使用 TLS 承载代理协议数据。通常先与 Address、Port 指向的服务器建立连接,再进行 TLS 握手,之后在加密通道内完成 Trojan 认证与请求转发。TLS 提供传输加密及服务器身份验证,Password 则属于 Trojan 的访问认证;两者不是可以相互替代的设置。

因此,填对 Password 不代表证书一定有效,能连通端口也不代表 Trojan 认证已经成功。普通 HTTPS 站点与 Trojan 服务都可能使用 443 端口,但不能把任意 HTTPS 地址填入 Add Server 当作 Trojan 节点。

Add Server 字段:Address、Port、Password 与 SNI

先取得自己已有服务的完整参数,再进入编辑页面。下面的域名和端口仅用于解释字段关系,不是可用连接信息;实际值必须按原配置填写。不要因为示例使用 443,就把自己的其他端口改成 443。

字段填写内容常见错误
Type选择 Trojan,与服务端协议保持一致。仅凭端口相同就选择其他协议。
Address服务器域名或 IP,例如 edge.example.com。粘贴完整网址,带入 https://、路径或端口。
Port服务端监听端口,例如 443;合法范围为 1–65535。漏填、自行猜测,或把端口重复写进 Address。
Password原配置提供的 Trojan 密码,保持字符和大小写不变。填写账户登录密码,或复制时带入空格、换行。
SNI原配置指定的 TLS 服务器名称,例如 tls.example.com。填写网址、IP 加端口,或随意换成其他网站域名。
Allow Insecure通常保持关闭,保留正常证书验证。遇到任何错误都打开,导致证书问题被掩盖。

Address 和 SNI 为什么可能不同

Address 是网络连接目的地,SNI 是 TLS ClientHello 中携带的服务器名称,服务器可据此选择证书或虚拟主机。二者可以相同,也可能由配置明确指定为不同值。例如,连接目的地是某个 IP,而 TLS 名称使用证书覆盖的域名;这时应保留配置提供的名称,不能把 SNI 简单改成该 IP。

SNI 与证书验证有关,但“发送了 SNI”本身不等于“证书已经通过验证”。证书仍需满足有效期、信任链和名称匹配等要求。不要依赖 SNI 留空后的默认推导来修复不完整参数;当 Address 是 IP 或与证书名称不同时,应先确认原配置要求的 TLS 名称。

手动添加步骤:先保存参数,再验证实际请求

以下按手动添加单个 Trojan 节点说明。若节点来自已有订阅,先核对订阅原始参数,避免把订阅条目改成与来源不一致的状态。后续订阅更新可能重新写入条目,因此应记录发现的问题并修正来源参数,而不是长期依赖本地临时修改。

  1. 打开添加页

    进入 Home → 右上角「+」,打开 Add Server。先确认正在新建条目,避免误改其他可用配置。

  2. 选择协议

    进入 Type → Trojan。协议以原配置为准;同一 Address、Port 下,选错 Type 仍会导致连接失败。

  3. 填写连接参数

    返回 Add Server,填写 Address、Port、Password。Address 只保留主机部分,Password 按原值复制,不额外添加引号,也不要手动转换成摘要值。

  4. 核对安全项

    在该条目的 TLS 相关设置中核对 SNI 与 Allow Insecure。SNI 使用原配置指定名称,Allow Insecure 保持关闭;若有其他传输字段,也按原配置逐项检查。

  5. 保存并测试

    保存后回到 Home,选择刚添加的条目。为排查规则影响,可临时将 Global Routing 设为 Proxy,打开连接开关,并按系统提示允许 VPN 配置。访问一个已知可用的 HTTPS 页面,完成后恢复原来的路由模式。

Allow Insecure:比较证书验证设置

Allow Insecure 的核心影响是放宽或跳过正常的 TLS 证书验证,并不是让连接切换为明文传输。不过,加密通道如果不能可靠验证对端身份,仍可能连接到冒充的服务器。它也不能修复密码错误、端口关闭、域名解析失败或服务端协议不匹配。

Allow Insecure 关闭

推荐

保留正常证书验证。证书名称不匹配、过期或信任链异常时,连接应报错,以便暴露需要修正的身份验证问题。

适合:日常使用、正式配置与常规排错。

Allow Insecure 开启

放宽证书验证后,即使请求能够继续,也不能证明服务器身份可信。该设置不应作为证书过期或 SNI 错误的长期解决方式。

适合:理解证书风险时识别配置差异;不作为日常使用方案。

结论:修正证书问题,不保留绕过设置

如果同一组参数只有开启 Allow Insecure 才能连接,应恢复关闭状态,再检查 SNI、设备时间及服务器证书链;无法自行修复时,将错误类型反馈给已有服务的维护方。

先在设备系统设置中确认日期与时间正确,再核对证书是否过期、证书覆盖的域名是否包含预期名称,以及服务端是否发送完整的中间证书链。自签名证书涉及独立的信任管理,不能用长期跳过验证来替代可信的配置方案。

按现象排错:超时、证书错误与认证失败

连接失败提示应按发生阶段解读。不同网络和服务端可能呈现相似的超时或断开结果,下面是排查顺序,不是仅凭一条提示就确定故障原因的方法。记录错误文字时可以保留类型,但应隐藏 Password、订阅令牌与完整连接信息。

一直超时,是 Password 填错了吗?

先回到 Home → 对应条目的编辑页,检查 Address、Port,再确认当前网络能够访问该地址与端口。超时可能发生在建立连接或握手阶段,不能直接判定为密码错误。换用另一条自己可用的网络进行相同测试,可帮助判断是否与当前网络有关。

出现证书错误,SNI 要填哪个域名?

填写已有配置指定的 TLS 名称,不是浏览器准备访问的目标网站域名。检查 SNI 是否带有协议前缀、端口或空格,并核对设备时间。若名称正确仍报错,应检查服务端证书有效期和证书链,而不是直接打开 Allow Insecure。

连接刚建立就断开,要重新生成密码吗?

先逐字符核对 Password 与 Type,检查复制是否混入换行,以及条目是否遗漏原配置指定的传输设置。不要自行生成新密码,因为服务端不会因此同步改变。TLS 建立后的快速断开也可能有其他原因,需要结合服务端记录确认。

测试有读数,但网页打不开怎么办?

在 Home 确认选中目标条目,临时使用 Global Routing → Proxy 再访问同一页面。若 Proxy 可用、Config 不可用,检查 Config 当前启用的规则与策略目标;若两种模式都失败,再检查认证、DNS 与目标站点,不要仅凭延迟读数认定节点正常。

验证完成后:恢复 Config,检查规则与更新

Global Routing → Proxy 用于本次隔离规则因素,并不意味着所有使用场景都应长期采用该模式。Direct 表示直连,不能用来验证 Trojan 转发;Config 按当前配置规则处理请求;Scene 则按已设置的场景选择路由行为。日常使用应恢复自己原来的有效模式。

如果 Proxy 正常而 Config 的访问结果不符合预期,检查当前 Config 中的规则顺序及其策略。例如,下面的语法示例把 example.com 及其子域名交给 PROXY,其余请求交给 DIRECT。这只是规则含义示例,不是要求覆盖现有配置;实际配置中的策略目标必须有效。

DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
App Store 正版核验