You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Golang实现ACMEv2 HTTP-01挑战时ACME服务器未发起验证求助

ACMEv2 HTTP-01挑战未触发验证的排查方向

问题背景

我通过一段代码手动完成ACMEv2 HTTP-01挑战流程,所有请求都返回201/200响应,挑战创建成功,但ACME服务器始终未向我的HTTP服务器发起验证请求。向挑战URL发送POST请求返回成功:

2022/07/17 13:49:28 challenge response {
  "type": "http-01",
  "status": "pending",
  "url": "https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/3039193714/PVI-4A",
  "token": "yoevDKY_bARdM5uHmVsk3s5lPK8BsBWC-SfmRN8MkLM"
}

但轮询授权状态时始终显示pending:

2022/07/17 13:49:43 authorization response {
  "identifier": {
    "type": "dns",
    "value": "billabull.com"
  },
  "status": "pending",
  "expires": "2022-07-24T13:49:27Z",
  "challenges": [
    {
      "type": "http-01",
      "status": "pending",
      "url": "https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/3039193714/PVI-4A",
      "token": "yoevDKY_bARdM5uHmVsk3s5lPK8BsBWC-SfmRN8MkLM"
    },
    {
      "type": "dns-01",
      "status": "pending",
      "url": "https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/3039193714/uHeVHQ",
      "token": "yoevDKY_bARdM5uHmVsk3s5lPK8BsBWC-SfmRN8MkLM"
    },
    {
      "type": "tls-alpn-01",
      "status": "pending",
      "url": "https://acme-staging-v02.api.letsencrypt.org/acme/chall-v3/3039193714/RomB0g",
      "token": "yoevDKY_bARdM5uHmVsk3s5lPK8BsBWC-SfmRN8MkLM"
    }
  ]
}

已设置2分钟轮询超时,且测试确认billabull.com的80端口HTTP服务器可正常访问,挑战路径能返回正确的密钥授权,但ACME服务器从未发起请求。

可能的原因及排查步骤

1. 未正确触发挑战验证

ACME协议中,创建挑战后必须向挑战的URL发送POST请求来告知服务器开始验证,仅创建挑战不会自动触发验证流程。确认代码中是否在创建挑战后,向返回的url字段发起了包含正确签名的POST请求,且请求返回200/202状态码。

2. 密钥授权内容错误

虽然测试挑战路径能返回内容,但需严格确认返回格式:

  • 密钥授权必须是{token}.{JWK thumbprint}格式
  • JWK thumbprint需使用SHA-256哈希,且采用Base64URL编码(不含填充字符)
  • 确保返回内容无多余空格、换行或其他字符,ACME服务器对内容匹配要求严格

3. DNS解析问题

  • 确认ACME服务器所在网络能正确解析billabull.com到你的服务器IP,可测试全球DNS解析同步状态(部分服务商TTL设置可能导致延迟)
  • 检查是否存在CNAME记录指向其他域名,确保最终解析IP为你的HTTP服务器IP

4. 防火墙/网络拦截

  • 确保服务器80端口对所有IP开放(Let's Encrypt验证服务器IP段动态变化,不能仅放行单个IP)
  • 检查安全组、防火墙规则(如iptables、ufw)或WAF是否拦截了ACME的验证请求
  • 确认网络中无NAT或代理导致请求无法到达HTTP服务器

5. HTTP服务器配置问题

  • 确认HTTP服务器处理/.well-known/acme-challenge/{token}路径时,没有重定向到HTTPS(HTTP-01挑战要求通过80端口的HTTP协议,重定向会导致验证失败或不触发)
  • 检查返回的Content-Type是否为text/plain,部分服务器默认返回text/html会导致ACME服务器无法识别
  • 确保该路径未设置身份验证或其他访问限制

6. ACME挑战状态同步延迟

Staging环境可能存在状态同步延迟,可尝试延长轮询时间(如5分钟),同时检查ACME服务器返回的授权对象中是否隐藏了error字段

内容的提问来源于stack exchange,提问作者danthegoodman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 23:36:23