本文面向已经持有自己的服务商参数或订阅、准备在 Shadowrocket 中核对 Trojan 配置的用户。先区分连接地址、认证密码与 TLS 身份校验,再按 Home → Add Server 的顺序填写,最后根据超时、证书错误和认证失败分别定位。本站不提供、不销售、不推荐任何节点或订阅。
Trojan 连接中,TLS 与密码分别检查什么
Shadowrocket(小火箭)中的 Trojan 类型用于连接对应的 Trojan 服务端。典型连接先建立 TCP 连接,再进行 TLS 握手,随后在加密通道内发送 Trojan 认证信息与目标请求。地址能解析、端口能建立连接,只说明前面的网络环节具备条件,不代表证书校验和密码认证都已经通过。
TLS 负责加密传输并验证服务端身份;Trojan 密码用于服务端对客户端进行认证。两者不能相互替代:密码正确不会修复证书名称不匹配,证书有效也不会使错误密码通过认证。排查时应把“无法连接到端口”“TLS 握手失败”“握手后请求失败”分开记录。
结论:先判断失败发生在哪一层
连接超时时先核对地址和端口;出现证书错误时先核对 SNI、证书与设备时间。不要把修改密码或开启 Allow Insecure 当作所有失败的通用处理方法。
在 Add Server 中按顺序填写 Trojan 参数
手动添加服务器从 Home 进入,不是在 Config 中编辑规则文件。Config 用于管理配置文件与规则;本节填写的是服务器连接参数。开始前保留已有参数原文,并确认服务商提供的类型确实是 Trojan,而不是仅因端口为 443 就自行判断协议。
-
打开添加页
在 Home 点击右上角“+”,进入 Add Server。打开 Type,选择 Trojan,再返回参数页。若正在编辑订阅生成的条目,先记录原值,避免之后更新订阅时无法比较差异。
-
填写连接地址
在 Address 填入已有参数给出的域名或 IP,在 Port 填入对应端口。Address 不包含
https://、路径或端口后缀;例如域名与443应分别放在两个字段中。 -
核对认证密码
在 Password 填写 Trojan 专用密码,不使用 App Store 账户密码,也不默认使用服务商网站登录密码。核对大小写、首尾空格和换行;手动输入时使用原始密码,不把分享链接中的百分号编码形式直接当作密码。
-
核对 TLS
按已有参数填写 SNI,确认 Allow Insecure 处于关闭状态。若配置包含额外传输选项,也应逐项保持一致,不能只复制地址和密码后忽略其余字段。
-
保存并验证
点击 Done 保存,回到 Home 选择该条目。首次启用连接时按系统提示授权 VPN 配置,再进行实际请求验证。保存成功只代表参数已写入,不代表服务端已经接受连接。
Address、SNI 与证书名称如何对应
Address 决定网络连接要到达哪里;SNI 是 TLS 握手中的服务器名称提示,用于让同一服务端上的不同站点选择相应证书。SNI 不是网页网址,不带协议、端口和路径,也不是随意选择一个可访问域名就能生效。其取值应由实际服务端配置决定。
服务端返回证书后,客户端仍需进行身份校验。预期的服务器名称必须与证书允许的名称相符,通常需要检查证书的 Subject Alternative Name。把 SNI 改成另一个域名不会改变证书内容,也不会自动把网络请求转到那个域名对应的服务端。
| 字段 | 示例或取值 | 核对重点 |
|---|---|---|
| Type | Trojan |
必须与服务端实际协议一致 |
| Address | edge.example.com |
只填连接域名,不包含 URL 路径 |
| Port | 443 |
示例值,不是协议强制端口 |
| Password | 自己的 Trojan 认证密码 | 保留原始字符,不附加空格 |
| SNI | tls.example.com |
仅演示地址与名称可以不同,实际值由服务端提供 |
| Allow Insecure | 关闭 | 保留正常证书校验 |
上表中的域名仅用于说明字段关系,不能作为可连接配置。Address 使用 IP 时尤其需要核对已有参数是否指定了 SNI:证书若只覆盖某个域名,而客户端按 IP 校验身份,就可能发生名称不匹配。反过来,SNI 已正确填写仍然报错时,还要检查证书是否过期、服务端是否返回了错误证书,以及中间证书链是否完整。
Allow Insecure 的作用与保留校验的判断
Allow Insecure 不是“增强兼容性”的普通性能选项。开启后会放宽 TLS 证书校验,无法再依赖正常校验确认连接对象的身份。它不会修复 DNS、错误端口、密码或服务端停机,也不能作为日常连接失败时的第一项修改。
Allow Insecure 关闭
推荐保留证书校验。遇到证书错误时,修正 SNI、设备时间、证书有效期或服务端证书链,使连接在正常校验下通过。
适合:日常使用,以及已有服务端采用受信任证书的配置
Allow Insecure 开启
放宽证书校验,降低对服务端身份的确认能力。即便开启后请求成功,也只能说明证书校验可能是此前的阻断环节,不能据此认定配置安全或问题已修复。
适合:理解风险的维护人员在受控环境中进行短时定位,不作为日常配置
结论:把证书修复作为完成条件
如果只有开启 Allow Insecure 才能连接,应让服务端维护方核对实际返回的证书、名称覆盖范围和证书链。完成修复后关闭该选项,再重新验证请求。
按症状排查:超时、证书错误与认证失败
每次只调整一个变量,并记录网络环境、所选条目、Global Routing 状态和错误内容。延迟测试有返回值并不等于完整的 Trojan 请求已经通过认证;应同时验证一个已知可访问的目标,并区分所有目标失败还是只有个别目标失败。
填完后一直超时,是密码错了吗?
不一定。先在 Home 重新打开该条目,核对 Address 与 Port,确认端口确实由服务端监听。若 Address 是域名,还要检查当前网络能否解析该域名。先确认基础连接可达,再检查 TLS 和密码,不要一次替换多个字段。
提示证书名称不匹配,应该改哪里?
先核对 SNI 是否与服务商给出的名称逐字符一致,排除 https://、路径和末尾空格。若一致,让维护方核对实际返回证书的名称;同一地址承载多个 TLS 站点时,错误的 SNI 可能得到另一个站点的证书。
证书还有效,为什么依然校验失败?
有效期正常只是条件之一。先到系统 Settings → General → Date & Time 核对设备时间,再请维护方检查中间证书链与信任来源。名称不匹配、链不完整或设备时间错误,都不能通过简单更换密码解决。
连接建立后立刻断开,怎样核对密码?
打开条目的 Password,重新从可信原始参数复制,核对大小写、换行和首尾空格。若此前从分享链接手工拆分字段,确认没有把编码字符原样填入。仅凭断开现象不能判定密码错误,还需由维护方结合服务端日志确认认证结果。
选了 Trojan 条目,为什么请求还是直连?
先看 Home → Global Routing。Direct 走直连;Config 按当前配置规则决定策略;Proxy 用于将请求交给代理策略处理;Scene 取决于所配置的场景。仅选择一个条目不会覆盖当前路由设置,应同时核对请求实际使用的策略。
连接成功后,核对规则与自动连接状态
Trojan 参数通过验证后,再回到日常的分流配置。Global Routing 使用 Config 时,规则按顺序匹配,FINAL 是前面均未命中后的兜底,不意味着所有请求必然经过当前 Trojan 条目。规则指向的策略组及其选择也应一并核对。
- 确认当前配置:在 Config 中确认正在使用的文件,而不是仅查看一个未启用文件的规则内容。
- 确认规则去向:
DOMAIN-SUFFIX,example.com,PROXY表示按域名后缀匹配并交给PROXY策略;该策略最终选择什么服务器,仍需核对配置。 - 确认兜底行为:
FINAL,DIRECT会让未命中前面规则的请求直连,不能用来证明 Trojan 连接失效。 - 确认自动连接条件:在 Settings → On Demand 查看已配置的触发条件。On Demand 负责按条件触发连接,不负责修正服务器密码、SNI 或证书。
- 保留可复核记录:记录修改字段和结果,提交错误信息时遮盖 Password 与订阅中的认证信息,不公开完整配置凭据。
如果需要协助判断故障层级,可继续查看连接排查手册;对规则与策略名称有疑问,可查阅名词解释。后续订阅更新后若再次出现同类问题,先比较更新前后的地址、端口、SNI 和传输参数,不要先关闭证书校验。