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