Skip to content

Conversation

@Fangliding
Copy link
Member

@Fangliding Fangliding commented Sep 16, 2025

新字段 PinnedPeerCertificateSha256 改自PinnedPeerCertificatePublicKeySha256 不过没有break什么东西 因为后者从未出现在文档中出现过(故意不写的 因为被我发现的时候我觉得不太好) 其为证书的sha256 为一个通用的证书指纹 chrome的证书查看器和crt.sh都以此作为证书的唯一标识符 类似这样 AE243D668EC9C7F74A0DCD1AD21C6676B4EFE30C39728934B362093AF886BF77 还有一种标识符是sha-1 Windows内置证书查看器是使用这个 crt.sh也有 但是觉得太旧而且混一起不方便就没用

从现在开始

证书链hash具有最高优先级 会无视其他选项 因为它精确指定了证书

然后会尝试验证 PinnedPeerCertificateSha256 这个字段具有两个行为
指定的是叶子证书 → 同证书链hash会直接通过验证
指定的是CA证书 → 暂时通过 将当前被验证身份的CA添加到证书池中
全都没有就是失败(废话)

执行 VerifyPeerCertInNames 它会根据里面指定的name重新验证证书 但是如果 PinnedPeerCertificateSha256 指定了一个CA 那么它将把验证成功添加到CA池进行验证(用于自签名CA 比如自己签发一个CA 在 PinnedPeerCertificateSha256 指定自定义CA的指纹 然后在这里指定SNI)

@Fangliding Fangliding marked this pull request as draft September 16, 2025 08:35
@KobeArthurScofield
Copy link
Contributor

虽然老 break proto 不是很好 不过这个应该可以替换掉原来的选项 一是用 pb 的发现 hash 对不上可以有机会重新配置 二是不用日后清理 而且这个功能只在 release note 出现过

@RPRX
Copy link
Member

RPRX commented Sep 16, 2025

顺便改成 Xray-core 内置 root 证书 net4people/bbs#526 (comment)

以及删掉 allowInsecure、用 PinnedPeerCertificateSha256 代替吧

@RPRX
Copy link
Member

RPRX commented Sep 16, 2025

PinnedPeerCertificateSha256 这个可以加进分享链接里

@Fangliding
Copy link
Member Author

删了allowInsecure不太好吧 我有的时候本地测试都得开(

@MoRanYue
Copy link

((这里认为,将allowInsecure改为环境变量或命令行参数,或许更好呀))

@RPRX
Copy link
Member

RPRX commented Sep 16, 2025

删了allowInsecure不太好吧 我有的时候本地测试都得开(

本地测试也可以 PinnedPeerCertificateSha256

以前好像提过删掉 allowInsecure 这个选项,有人说有时候证书过期了,不开会失联,但现在都是 REALITY 了

@Fangliding
Copy link
Member Author

Fangliding commented Sep 16, 2025

这个东西到底不好提取 要不加个环境变量 XRAY_DEBUG 什么的然后从infra里检测没有这个flag就禁掉这个功能 也不用删代码 以后有其他可能危险的功能也可以加到底下

@RPRX
Copy link
Member

RPRX commented Sep 16, 2025

这个东西到底不好提取

./xray tls cert 顺带输出 sha256 不就行了,再扩展一下 ./xray tls ping 让它输出各级 sha256(或许 InsecureSkipVerify)

还有现在的两个 pin 选项都删了,统一改为 PinnedPeerCertSha256 就行了,留着重复功能的话代码逻辑上较复杂

@Fangliding
Copy link
Member Author

重构了大量有的没的把功能迁移走
自定义证书库参考我之前写的 https://github.com/XTLS/Xray-core/pull/3897/files 它们不太好管理 并且好像没有官方公开的这样的list可供拉取 火狐发布的是他们专有的格式 curl有一个他们自动转换的pem证书 但是是绑一起的只能一块加载
并且还有一个要不要把中国背景CA踹掉的问题 周围很多人喜欢这么干但是我个人还是倾向相信证书透明度监管而不是基于国家背景的简单判断 今天国安局明天CIA都得防着那大家不如别用CA都用预共享去算了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants