REALITY 公钥不匹配为何失败?密钥对应、证书与用户认证区分

REALITY 公钥不匹配为何失败?密钥对应、证书与用户认证区分

Ryan Foster
2026年9月12日· 8 分钟阅读

REALITY 公钥不匹配会失败,是因为客户端需要使用与服务端 privateKey 对应的公钥材料。当前 Project X 客户端配置把该材料放在 password 字段;旧版配置和界面可能把同一角色称为 publicKey。若两者不属于同一密钥对,客户端与服务端就无法完成预期的 REALITY 认证计算。[1]

完整 VPN 指南介绍端到端路径。本文只回答密钥分别在哪一端、无关公钥为何失败,以及这种失败不能说明哪些 TLS 证书或 VLESS 用户问题。

关键要点

  • 服务端必须保护 privateKey;客户端只接收与之对应的公钥材料。
  • 当前客户端语法使用 password;publicKey 是旧字段名,并非要再配置第二把密钥。
  • 格式正确但来自另一密钥对的公钥仍会失败。
  • 网站证书、serverName、短 ID 和 VLESS UUID 是不同检查。
  • 轮换时应生成并安全分发新密钥对,绝不能把服务端私钥复制给客户端。

REALITY 公钥不匹配是什么?

Project X 文档规定服务端使用 X25519 privateKey,客户端 password 保存相应公钥,并说明该客户端字段旧称 publicKey。[1] 客户端若保存了另一台服务器的公钥、复制内容不完整、被导入工具按错误结构解析,或在服务端轮换后仍保留旧值,就会出现不匹配。

私钥必须留在服务端。客户端既不需要也不应获得它。公钥也不能因为长度相同就随意替换:格式解析只回答“像不像合法密钥材料”,认证计算还必须回答“是否对应这台服务器正在使用的私钥”。

图例:1 是当前客户端 password 中的公钥材料;2 表示 X25519 配对关系;3 是仅保存在服务端的 privateKey。连线表示配置对应关系,不表示私钥会被传给客户端,也不是完整报文时序。

为什么密钥对必须对应?

公钥密码系统的目的之一,是让公钥持有者不能由此还原私钥。REALITY 使用密钥材料参与预期握手的认证和保护。服务端私钥与客户端对应公钥可让两端算出兼容结果,而无需在网络上传输私钥。REALITY 项目把其设计描述为经修改的 TLS,并为获准客户端提供不依赖常规证书的服务端认证。[2]

如果客户端拿着服务器 B 的公钥却连接服务器 A,即使两台服务器都正常,计算结果也不会一致。重试不会让无关密钥突然配对;修改 SNI、目标站、UUID 或浏览器设置同样无法修复这个数学关系。

备份恢复可能制造隐蔽故障:服务器地址和大部分配置恢复了,但 REALITY 私钥重新生成,旧客户端仍保存先前公钥。管理面板也可能显示新派生公钥,而订阅缓存仍输出旧值。两项单独看都像合法字符串,只有配对关系错误。

为什么客户端字段叫 password?

这是当前配置结构的命名,不表示它是可记忆密码、账户口令、共享密钥或服务端私钥。应以实际安装版本的文档为准。有些界面继续显示“public key”,但生成的 JSON 已使用 password。

迁移期间不要盲目同时填写新旧字段。不同版本可能拒绝、忽略或转换未知字段,导入层也可能展示新值却实际保留旧值。应在脱敏后检查程序解析或导出的有效配置。

位置当前字段旧称正确角色
REALITY 服务端privateKeyprivateKey保密的 X25519 私钥材料
REALITY 客户端passwordpublicKey与该服务端私钥对应的公钥材料
TLS 名称serverNameSNI 相关标签获准且与配置协调的名称
REALITY 选择值shortId短 ID服务端列表中可接受的一项
VLESS 用户idUUID获准的代理用户身份

字段名称并不能证明每个产品都开放这些字段。订阅 URI 或二维码也可能隐藏真实映射,所以应比较获准配置真源与导入结果,而不是凭标签直觉编辑。

它与 TLS 证书问题有何不同?

网站 TLS 证书通过 Web PKI 绑定域名和公钥;REALITY 配置密钥对是另一项认证输入。目标站和 serverNames 会影响面向 TLS 的行为,但目标网站证书不是客户端 REALITY password。把证书指纹或网站公钥复制到此字段,无法得到服务端 REALITY 公钥。

两类错误都可能发生在握手阶段,表面症状会重叠。应先确认预期监听器收到请求,再核对服务端密钥生成记录和客户端配置修订号,最后检查服务器名称与目标站兼容性。REALITY 目标站为何重要说明后一项独立契约。

网络设备也可能在 REALITY 处理密钥前终止路径。服务端没有请求记录时,公钥假设仍过早;密钥轮换后服务端立即拒绝获准请求,会增强该假设,但仍需关联日志或受控对照才能确认。

它与短 ID、VLESS UUID 失败有何不同?

公钥、短 ID 和 UUID 都可被笼统称作凭据,但回答的问题不同。[3]公钥对应 REALITY 服务端身份材料;短 ID 必须命中 REALITY 可接受列表;UUID 则在外层处理到达 VLESS 后匹配获准用户。

因此一个配置可以通过前一项再在后一项失败。公钥正确但短 ID 错误仍会被拒;REALITY 成功但 VLESS UUID 错误,可在更后阶段失败。UUID 正确不能补偿公钥不匹配,因为请求无法形成可用的已认证 VLESS 会话。

REALITY 短 ID 的作用解释成员匹配;VLESS、REALITY 与 XTLS Vision 分层指南说明为何排障应保留检查顺序,而不是一次性替换所有值。

应怎样生成和轮换密钥?

在可信管理环境使用实现文档规定的 X25519 生成命令。私钥只写入受保护的服务端密钥存储,派生公钥写入获准客户端分发系统。避免会共享历史记录的终端、聊天、公开粘贴服务、截图,以及保留命令参数或输出的监控字段。

计划轮换前,应列出受影响端点、客户端和回退时间窗。按照实现支持的方式,把新私钥和对应公钥作为一个受控变更部署。若软件不支持两组密钥重叠,就安排协调切换,不要自行发明双密钥字段。

部署后,在不显示私钥的前提下回读服务端有效配置,核对派生公钥指纹与客户端修订号。先验证一个获准客户端,再扩大范围。回退期结束且证据保留规则允许后,停止分发旧配置并移除旧的存储材料。 仅有一个客户端连上,并不代表轮换已经完成。还要确认旧配置会按预期失败、当前配置能到达预期的后续阶段,而且监控中没有出现明文密钥。记录负责人、版本、时间戳和指纹,而不是密钥值本身。

怎样安全诊断公钥不匹配?

冻结一次失败,不要批量编辑。记录端点、端口、两端版本、时间、有效配置修订号和第一处错误阶段。先证明基础网络可达且预期 REALITY 监听器处理了请求。

通过文档规定工具派生或取得当前服务端私钥的获准公钥,用安全指纹与客户端实际 password 比较。检查空白、截断、过期二维码或订阅缓存、旧 publicKey 导入、连错环境,以及误用了另一服务端的值。

若密钥对应,则依次检查 serverName、短 ID、时钟、指纹选项、版本兼容性,随后才是 VLESS 身份和 flow。若不对应,只经受保护渠道修正这一项并重复同一个有限测试。VLESS Reality 连接失败清单给出完整层次。

绝不能为了“测试”把服务端私钥发给客户端或支援工单,也不能关闭认证看看流量是否通过。这会破坏正在诊断的安全边界,并把配置错误升级为凭据泄露。

托管 VPN 应用能否代替自管密钥对?

如果你维护 REALITY 密钥对只是为了获得一条普通的加密连接,不妨考虑托管服务是否更合适。AethoVPN 账户使用邮箱验证码,文档说明的设置流程是安装客户端并在应用中选择位置,并不涉及导入或比对密钥。在 REALITY 客户端失败的设备上,如果 AethoVPN 能连上,说明这台设备可以经加密隧道正常上网,排查重点就应留在密钥对上,而不是基础连通性。它的文档既没有提到 REALITY 或导入 X25519 密钥,也没有列出所用协议,所以你自己服务器的预期公钥仍只能由获授权的配置所有者提供。可用邮箱创建账户来试试托管方式。

总结

  • 客户端公钥材料必须对应当前服务端 privateKey。
  • 当前客户端字段名为 password,旧资料可能写作 publicKey。
  • 看似合法但来自另一密钥对的值仍会失败。
  • REALITY 密钥、网站证书、短 ID 和 VLESS UUID 是不同输入。
  • 应通过有效配置指纹排查,并经受保护且兼容版本的渠道轮换。

常见问题

客户端 password 是普通密码吗?

不是。在当前 REALITY 配置中,它保存服务端对应的公钥材料,不是账户口令或服务端私钥。

可以把服务端 privateKey 复制给客户端吗?

不可以。私钥必须留在服务端。应使用文档规定工具派生公钥,只分发客户端需要的值。

为什么旧配置写 publicKey?

那是历史客户端字段名。应检查安装版本的当前结构和最终导入配置,不要同时盲填两个字段。

REALITY 密钥是目标网站证书密钥吗?

不是。网站证书验证和 REALITY 配置认证互相独立,目标站证书和获准的服务器名称都不能替代 REALITY 密钥对。

正确 UUID 能修复公钥不匹配吗?

不能。VLESS UUID 属于更后的用户认证层,无法修复先发生的 REALITY 密钥关系错误。

超时能证明公钥错了吗?

不能。DNS、路由、地址族、防火墙、端口或监听器问题都可能在处理密钥之前发生。必须关联两端证据,找出第一个出错的阶段。

公钥材料需要脱敏吗?

在公开诊断中需要。它虽不是私钥,但会标识服务端配置,应只经获准渠道分享。

免责声明:本文仅提供获准系统的一般技术信息。请保护私钥、使用认证分发渠道,排障时不要削弱验证。

来源:

  1. Project X, "REALITY configuration": https://xtls.github.io/en/config/transports/reality.html
  2. XTLS, "REALITY README": https://github.com/XTLS/REALITY/blob/main/README.en.md
  3. Project X, "VLESS inbound configuration": https://xtls.github.io/en/config/inbounds/vless.html

Sources checked 2026 年 9 月 12 日。


延伸阅读:

开启 3 天免费试用

注册即可免费体验全部高级功能。

*仅限新用户;每位用户只能获得一次试用。

REALITY 公钥不匹配为何失败?密钥对应、证书与用户认证区分 | AethoVPN