对 ACME 服务器进行反向代理一直不成功

2023-03-13 00:27:48 +08:00
 daimaosix
ZeroSSL ACME 在大陆访问速度还算可以,但是 Google 的 ACME 被墙了,大陆访问不了,于是想着对常用的 ACME 服务器做一个 Nginx 反向代理,发现代理 ZeroSSL 和 Google 都不行,测试发现,都是卡在了 JWS url header 上面,因为使用 sub_filter 替换了域名,所以肯定是域名校验没通过,但是又不知道具体需要验证的请求头是啥,没办法把官方的 ACME 域名传过去,搜索了半天,ChatGPT 也问了,都不行,甚至连个案例也没....所以测试下来失败告终,有大佬研究过吗?从哪里入手呀。
1578 次点击
所在节点    NGINX
15 条回复
j8sec
2023-03-13 00:38:30 +08:00
proxy_pass 没有用的;

因为 ACME 协议中,ACME 客户端会对每个请求的 url 进行签名( `payload` 的 `signature` 的 factors 包含 `url`;);
如果对请求 URL 进行反代,ACME 客户端会对签名 url 也保持反代后的 url ,但是 ACME 服务器(例如 `let's encrypt` 或者 `sectigo`(ZeroSSL 的 ACME 方案提供商) 对这个 URL 是不认可的,他们还按照你反代前的 URL 进行算签,结果 CA 算出来的签名和客户端签名不符,就报错了。
daimaosix
2023-03-13 00:48:54 +08:00
@j8sec 所以说这个没有办法解决嘛?
j8sec
2023-03-13 01:45:00 +08:00
@daimaosix 对,除非自己当 CA 。或者...
daimaosix
2023-03-13 01:50:34 +08:00
@j8sec 好嘞老哥,还想着搞了开放给大家用呢,宣布凉凉
AoEiuV020CN
2023-03-13 03:16:36 +08:00
我是直接用 github 的 actions 自动申请了证书再发回国内服务器上的,
不过我用的是 certbot ,验证用 dns 脚本设置 txt 记录验证,不使用网站所在服务器申请,
loginv2
2023-03-13 08:41:38 +08:00
我也在境外的 vps 上使用 dns 验证申请完,再发回国内的机器上使用。
yasi
2023-03-13 10:13:25 +08:00
@j8sec 透明代理可以吗
msg7086
2023-03-13 10:15:10 +08:00
为什么不用 DNS 认证呢。
daimaosix
2023-03-13 11:21:02 +08:00
@AoEiuV020CN
@loginv2
@msg7086
我这边是有套管理系统,单域名用的 HTTP ,泛域名用的 DNS ,但是请求是从管理系统发出的,所以系统在国内,如果不能反向代理的话....那只能考虑把系统部署到 HK 了
msg7086
2023-03-14 02:11:10 +08:00
那你这个需求就比较小众了。正常情况下 HTTP 认证有问题的场景,切到 DNS 认证就行了。我不知道你的系统是什么毛病,单域名只能做 HTTP 。不知道做成 SAN 域名(一单+一泛)能不能强制让它用 DNS ?
daimaosix
2023-03-14 02:41:27 +08:00
@msg7086 买的负载均衡器商业产品,有一个管理系统,可视化配置会分发给各个节点,管理系统功能可以签发和续订,然后把证书推到各个节点,单域名签发系统会自动给节点配置 HTTP-01 规则,这个可以签发,泛域名签发,这个系统有 DNS 功能,签发时也会自动配置 DNS-01 的验证,所以不是说无法验证,是管理系统访问 ACME 域的时候,因为做了反代,导致 ACME 域无法验证来源
j8sec
2023-03-14 18:42:14 +08:00
@yasi 应用层的域名和 URL 未发生变更即可
aru
2023-04-25 14:59:05 +08:00
tcp 代理+ dns 劫持就好了吧
caomingjun
2023-07-06 00:37:11 +08:00
@j8sec 如果不改变 URL ,用自签证书来进行反代,然后让系统信任自签证书可以吗?或者说,ACME 协议会有类似 SSL pinning 的操作吗?
j8sec
2023-09-05 21:25:02 +08:00
这个你可以试下。或者使用 Tunnel 来给 GTS 开启 VPN ,然后你 ACME 客户端机器加个 hosts

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/923457

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX