Shadowrocket Trojan 节点参数填写:密码、SNI 与 TLS 证书校验要点

介绍 Trojan 协议借助 TLS 传输的基本原理,逐项说明在 Add Server 中填写地址、端口、密码、SNI 与 Allow Insecure 时需要注意什么。

本文速览

本文面向已经持有自己的服务商参数或订阅、准备在 Shadowrocket 中核对 Trojan 配置的用户。先区分连接地址、认证密码与 TLS 身份校验,再按 Home → Add Server 的顺序填写,最后根据超时、证书错误和认证失败分别定位。本站不提供、不销售、不推荐任何节点或订阅。

Trojan 连接中,TLS 与密码分别检查什么

Shadowrocket(小火箭)中的 Trojan 类型用于连接对应的 Trojan 服务端。典型连接先建立 TCP 连接,再进行 TLS 握手,随后在加密通道内发送 Trojan 认证信息与目标请求。地址能解析、端口能建立连接,只说明前面的网络环节具备条件,不代表证书校验和密码认证都已经通过。

TLS 负责加密传输并验证服务端身份;Trojan 密码用于服务端对客户端进行认证。两者不能相互替代:密码正确不会修复证书名称不匹配,证书有效也不会使错误密码通过认证。排查时应把“无法连接到端口”“TLS 握手失败”“握手后请求失败”分开记录。

443
常见 TLS 服务端口,实际端口以已有参数为准
TCP
本文讨论的基础 Trojan 连接传输
3 项
证书名称、有效期与信任链需要分别核对

结论:先判断失败发生在哪一层

连接超时时先核对地址和端口;出现证书错误时先核对 SNI、证书与设备时间。不要把修改密码或开启 Allow Insecure 当作所有失败的通用处理方法。

在 Add Server 中按顺序填写 Trojan 参数

手动添加服务器从 Home 进入,不是在 Config 中编辑规则文件。Config 用于管理配置文件与规则;本节填写的是服务器连接参数。开始前保留已有参数原文,并确认服务商提供的类型确实是 Trojan,而不是仅因端口为 443 就自行判断协议。

  1. 打开添加页

    在 Home 点击右上角“+”,进入 Add Server。打开 Type,选择 Trojan,再返回参数页。若正在编辑订阅生成的条目,先记录原值,避免之后更新订阅时无法比较差异。

  2. 填写连接地址

    在 Address 填入已有参数给出的域名或 IP,在 Port 填入对应端口。Address 不包含 https://、路径或端口后缀;例如域名与 443 应分别放在两个字段中。

  3. 核对认证密码

    在 Password 填写 Trojan 专用密码,不使用 App Store 账户密码,也不默认使用服务商网站登录密码。核对大小写、首尾空格和换行;手动输入时使用原始密码,不把分享链接中的百分号编码形式直接当作密码。

  4. 核对 TLS

    按已有参数填写 SNI,确认 Allow Insecure 处于关闭状态。若配置包含额外传输选项,也应逐项保持一致,不能只复制地址和密码后忽略其余字段。

  5. 保存并验证

    点击 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 条目。规则指向的策略组及其选择也应一并核对。

如果需要协助判断故障层级,可继续查看连接排查手册;对规则与策略名称有疑问,可查阅名词解释。后续订阅更新后若再次出现同类问题,先比较更新前后的地址、端口、SNI 和传输参数,不要先关闭证书校验。

App Store 下载指南先核对正版信息