本文面向已经持有自己服务商参数或订阅的用户,说明 Shadowrocket 中 Trojan 的连接地址、认证密码与 TLS 名称如何对应。先区分网络连接、证书验证和协议认证,再按步骤填写 Add Server,最后根据超时、证书错误和认证失败等现象缩小排查范围;无需通过关闭证书验证来碰运气。
Trojan 连接中的三层检查
Shadowrocket(小火箭)中的 Trojan 是连接协议类型,不是订阅地址类型。常见 Trojan 连接先与服务器建立 TCP 连接,再完成 TLS 握手,随后在加密通道中进行 Trojan 认证与请求传输。TLS 使链路具有 HTTPS 常见的加密传输特征,但这不表示流量无法被识别,也不表示目标网站会因此信任代理服务器。
三层检查各自解决不同问题:地址和端口决定能否找到服务入口;TLS 验证用于确认对端身份;Trojan 密码决定是否具备使用该入口的权限。密码正确不能弥补证书名称不匹配,证书有效也不能证明密码正确。排查时应按建立连接的先后顺序检查,而不是同时改动多个字段。
本文讨论常见的 Trojan over TLS 参数。若已有配置还包含 WebSocket 等传输设置,必须同时核对传输类型、Host 和路径,不能只抄地址、端口与密码。Trojan 与其他协议的字段不能互换;尤其不要因为参数里出现长字符串,就把它当作其他协议的用户标识。
Add Server 字段对应关系
手动添加前,先从自己的参数记录中找齐服务地址、服务端口、Trojan 密码和 TLS 服务名称。以下域名与地址仅用于解释字段关系,不是可连接服务。示例假定连接地址为 192.0.2.10、端口为 443,TLS 服务名称为 gateway.example.com;实际填写时必须替换为自己的完整参数。
| 字段 | 填写依据 | 常见错误 |
|---|---|---|
| Type | 选择 Trojan | 选成其他协议,导致认证方式不匹配 |
| Address | 已有参数中的服务器域名或 IP 地址 | 粘贴整个订阅 URL,或附带 https:// 和路径 |
| Port | 服务端实际监听端口,例如 443 | 看见 TLS 就强行改为 443,覆盖原端口 |
| Password | 服务商提供的 Trojan 连接密码 | 使用账户登录密码,或复制时带入空格、换行 |
| SNI | 已有参数指定的 TLS 服务名称 | 填入带协议前缀的 URL、IP 地址或任意网站域名 |
| Allow Insecure | 正常使用保持关闭,保留证书验证 | 把跳过证书验证误当成修复连接的方法 |
Password 是协议认证材料,按原始内容填写,区分大小写,不自行进行散列或编码。导入链接中的密码可能经过 URL 编码,优先让应用解析原链接;从网页复制手动参数时,检查是否混入不可见字符。备注可以自行修改,但备注不是认证字段,修改备注不会改变远端服务身份。
结论:先确认端口来源
已有参数写明其他端口时保留原值;只有参数明确给出 443 才填写 443。连接超时先核对 Address 与 Port,不先改 Password 或关闭证书验证。
SNI 与证书名称的关系
SNI 是 TLS ClientHello 中用于告知服务器目标服务名称的扩展。同一 IP 地址可以承载多个 TLS 服务,服务器可能依据 SNI 选择证书与后端。因此,Address 可以是用于建立连接的 IP,而 SNI 仍应是已有配置指定的域名。这种分工不是矛盾:一个回答“连接到哪里”,另一个回答“请求哪个 TLS 服务”。
证书验证还需要检查信任链、有效期以及证书是否覆盖预期服务名称。以 gateway.example.com 为例,不能因为服务器可以连通,就随意把 SNI 改为 www.example.com。名称不匹配时,即使密码完全正确,也可能在进入 Trojan 认证前失败。
- Address 为域名:确认该域名可以解析到预期服务器;若参数另列 SNI,仍按指定值填写。
- Address 为 IP:检查参数中是否提供独立的 SNI;普通域名证书通常不覆盖直接连接的 IP 地址。
- SNI 留空:不要依赖对默认取值的猜测。先核对原始订阅或服务配置,确认是否需要显式设置。
- 设备时间异常:先在系统“设置 → 通用 → 日期与时间”检查时间;错误的时间可能影响证书有效期判断。
SNI 不是密码,也不提供访问授权。普通 TLS 握手中的 SNI 通常不是保密字段,不应把敏感令牌写进去。修改 SNI 后能够建立 TLS 连接,也不能单独证明该配置可用,还要继续验证 Trojan 认证和实际请求。
Allow Insecure:证书验证设置
Allow Insecure 控制是否允许跳过正常的服务器证书验证。开启后,即便连接仍经过 TLS 加密,客户端也不能据此可靠确认对端就是预期服务器;加密和身份验证是两件事。错误证书、被替换的证书或不受信任的证书不应只靠这个开关掩盖。
Allow Insecure 关闭
推荐保留正常证书验证。出现证书错误时检查 SNI、设备时间、证书有效期与服务端证书链,修正问题来源。
适合:日常连接、长期保存的配置
Allow Insecure 开启
放宽对服务器证书的验证,失去相应身份校验保障;不能修复错误端口、错误密码或不匹配的传输设置。
适合:理解风险且受控的短时诊断,不用于长期配置
如果只有开启该项才能连接,应将现象记录为“证书验证相关问题”,而不是“已经修好”。恢复关闭状态,把证书错误信息交给自己的服务商核对。不要在身份无法确认的连接中进行敏感操作,也不要把长期关闭验证当作通用排错步骤。
从添加参数到验证请求
若已有订阅已经生成对应 Trojan 条目,优先核对导入条目与原始参数,不必重复手动添加。订阅管理的条目可能在更新时重新生成,手动改动是否保留取决于条目来源;诊断前记下改动,避免把一次本地修改误认为远端已经修复。
-
新建条目
进入 Home → 右上角“+” → Add Server,在 Type 中选择 Trojan。若正在检查已有条目,打开该条目的编辑页,而不是另建一个同名条目。
-
填写参数
依次核对 Address、Port、Password 和 SNI。将 Allow Insecure 保持关闭;传输附加项按已有参数填写,不额外启用未提供的设置,然后保存。
-
选定服务器
返回 Home,选择刚保存的 Trojan 条目。记录原来的 Global Routing 设置,短时选择 Proxy 以减少规则分流对测试的干扰。
-
发起请求
打开连接开关,首次连接按系统提示授权 VPN 配置。使用自己已知可访问的测试页面发起新请求,核对结果与应用日志;仅有延迟读数不足以证明完整请求成功。
-
恢复分流
测试结束后恢复原来的 Global Routing 设置。若在 Proxy 下可用、回到 Config 后异常,转查当前 Config 的规则匹配与策略指向,不继续盲改 Trojan 密码。
Global Routing 中的 Proxy 是路由姿态,规则中的 PROXY 是策略关键字,二者不要混为同一个字段。临时切换 Proxy 只能帮助隔离规则因素,不能替代证书和认证检查。测试期间也不需要同时调整 Settings → On Demand;按需连接条件与单条 Trojan 参数属于不同排查范围。
握手失败的排查顺序
先记录失败发生在哪一层,再一次只改变一个变量。日志措辞可能随系统和错误来源不同,下面按现象归类,不把某一条提示当作唯一诊断依据。提交问题时保留错误类型、发生时间、网络类型和已核对的字段,隐去 Password 与完整订阅链接。
- 域名无法解析:确认 Address 没有拼写错误或多余路径,再检查当前网络的 DNS 解析。若地址本身无法解析,修改 Trojan 密码不会有作用。
- 连接超时或拒绝:核对 Address 与 Port,确认服务是否在该端口监听。超时可能涉及网络路径,拒绝可能涉及端口未开放,不能仅凭现象断言是哪一方故障。
- TLS 或证书错误:核对 SNI、设备时间、证书名称和有效期;请服务商检查证书链及对应 TLS 服务,保留证书验证。
- TLS 后立即断开:重新核对 Type、Password 与传输选项;握手完成后断开不一定就是密码错误,还应结合服务端日志判断。
- 连接后部分请求失败:检查 Global Routing 与当前 Config,确认请求是否经过所选条目,再区分目标站点故障、DNS 问题与规则影响。
密码复制了,为什么还是连不上?
先确认复制的是 Trojan 的 Password,而不是账户登录密码。进入 Home 中对应条目的编辑页,检查首尾空格、换行与大小写;然后核对端口和 SNI,不用重复修改正确的密码。
Address 填 IP,SNI 也要填 IP 吗?
不一定。若已有参数提供域名作为 TLS 服务名称,SNI 填该域名;Address 保留连接用的 IP。不要将示例域名代入自己的配置,也不要随机选一个能打开的网站域名。
打开 Allow Insecure 就好了,可以一直开吗?
不应把该现象当作长期解决方案。恢复关闭,核对 SNI 与设备时间,并请自己的服务商检查证书有效期和证书链;这类变化提示验证环节需要处理,不证明服务身份可靠。
订阅更新后又失效,改哪里?
先比较更新前后的 Address、Port、SNI 与传输设置,确认 Home 中实际选中的条目。若更新覆盖了本地修改,回到原始订阅参数核对来源;不要将密码或完整订阅令牌贴入公开求助内容。
最后区分应用获取与连接服务:Shadowrocket 是闭源商业应用,通过 App Store 一次性买断获取,以 iPhone、iPad 使用为主,系统要求以 App Store 页面标注为准。客户端买断 ≠ 线路套餐。本文仅解释如何使用自己已有的参数,不提供、不销售、不推荐连接服务或订阅。