NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
daimaosix
V2EX  ›  NGINX

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

  •  
  •   daimaosix · Mar 13, 2023 · 2418 views
    This topic created in 1156 days ago, the information mentioned may be changed or developed.
    ZeroSSL ACME 在大陆访问速度还算可以,但是 Google 的 ACME 被墙了,大陆访问不了,于是想着对常用的 ACME 服务器做一个 Nginx 反向代理,发现代理 ZeroSSL 和 Google 都不行,测试发现,都是卡在了 JWS url header 上面,因为使用 sub_filter 替换了域名,所以肯定是域名校验没通过,但是又不知道具体需要验证的请求头是啥,没办法把官方的 ACME 域名传过去,搜索了半天,ChatGPT 也问了,都不行,甚至连个案例也没....所以测试下来失败告终,有大佬研究过吗?从哪里入手呀。
    15 replies    2023-09-05 21:25:02 +08:00
    j8sec
        1
    j8sec  
       Mar 13, 2023   ❤️ 1
    proxy_pass 没有用的;

    因为 ACME 协议中,ACME 客户端会对每个请求的 url 进行签名( `payload` 的 `signature` 的 factors 包含 `url`;);
    如果对请求 URL 进行反代,ACME 客户端会对签名 url 也保持反代后的 url ,但是 ACME 服务器(例如 `let's encrypt` 或者 `sectigo`(ZeroSSL 的 ACME 方案提供商) 对这个 URL 是不认可的,他们还按照你反代前的 URL 进行算签,结果 CA 算出来的签名和客户端签名不符,就报错了。
    daimaosix
        2
    daimaosix  
    OP
       Mar 13, 2023
    @j8sec 所以说这个没有办法解决嘛?
    j8sec
        3
    j8sec  
       Mar 13, 2023
    @daimaosix 对,除非自己当 CA 。或者...
    daimaosix
        4
    daimaosix  
    OP
       Mar 13, 2023 via Android
    @j8sec 好嘞老哥,还想着搞了开放给大家用呢,宣布凉凉
    AoEiuV020CN
        5
    AoEiuV020CN  
       Mar 13, 2023 via Android
    我是直接用 github 的 actions 自动申请了证书再发回国内服务器上的,
    不过我用的是 certbot ,验证用 dns 脚本设置 txt 记录验证,不使用网站所在服务器申请,
    loginv2
        6
    loginv2  
       Mar 13, 2023
    我也在境外的 vps 上使用 dns 验证申请完,再发回国内的机器上使用。
    C1V7dYXW4PN67euV
        7
    C1V7dYXW4PN67euV  
       Mar 13, 2023
    @j8sec 透明代理可以吗
    msg7086
        8
    msg7086  
       Mar 13, 2023
    为什么不用 DNS 认证呢。
    daimaosix
        9
    daimaosix  
    OP
       Mar 13, 2023
    @AoEiuV020CN
    @loginv2
    @msg7086
    我这边是有套管理系统,单域名用的 HTTP ,泛域名用的 DNS ,但是请求是从管理系统发出的,所以系统在国内,如果不能反向代理的话....那只能考虑把系统部署到 HK 了
    msg7086
        10
    msg7086  
       Mar 14, 2023
    那你这个需求就比较小众了。正常情况下 HTTP 认证有问题的场景,切到 DNS 认证就行了。我不知道你的系统是什么毛病,单域名只能做 HTTP 。不知道做成 SAN 域名(一单+一泛)能不能强制让它用 DNS ?
    daimaosix
        11
    daimaosix  
    OP
       Mar 14, 2023 via Android
    @msg7086 买的负载均衡器商业产品,有一个管理系统,可视化配置会分发给各个节点,管理系统功能可以签发和续订,然后把证书推到各个节点,单域名签发系统会自动给节点配置 HTTP-01 规则,这个可以签发,泛域名签发,这个系统有 DNS 功能,签发时也会自动配置 DNS-01 的验证,所以不是说无法验证,是管理系统访问 ACME 域的时候,因为做了反代,导致 ACME 域无法验证来源
    j8sec
        12
    j8sec  
       Mar 14, 2023
    @yasi 应用层的域名和 URL 未发生变更即可
    aru
        13
    aru  
       Apr 25, 2023
    tcp 代理+ dns 劫持就好了吧
    caomingjun
        14
    caomingjun  
       Jul 6, 2023
    @j8sec 如果不改变 URL ,用自签证书来进行反代,然后让系统信任自签证书可以吗?或者说,ACME 协议会有类似 SSL pinning 的操作吗?
    j8sec
        15
    j8sec  
       Sep 5, 2023
    这个你可以试下。或者使用 Tunnel 来给 GTS 开启 VPN ,然后你 ACME 客户端机器加个 hosts
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1185 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 18:07 · PVG 02:07 · LAX 11:07 · JFK 14:07
    ♥ Do have faith in what you're doing.