Golang ACMEv2 HTTP-01 挑战不挑战服务器

使用此代码,我正在尝试手动 HTTP-01 挑战以更好地了解该过程的工作原理。所有请求都返回 201/200 的响应以及预期的正文,我能够成功创建挑战。


然而,ACME 服务器似乎永远不会挑战 HTTP 服务器。当 POST 到挑战 URL 时,我得到了成功的回报:


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"

}

但是,在轮询授权状态时,我可以看到它仍处于待定状态:


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 分钟(服务器可用),所以我觉得它应该在那个时间范围内合理地发生。


我还测试了 HTTP 服务器在域的端口 80 上可用billabull.com,并且向质询路径发出 GET 请求确实返回了正确的密钥授权。但是,ACME 服务器从不向服务器发出请求。


有谁知道为什么 ACME 服务器可能不会挑战我的服务器?


米琪卡哇伊
浏览 92回答 1
1回答

侃侃尔雅

我不得不使用一个主体[]byte("{}")而不是[]byte{}挑战端点编辑:出于某种原因,这个端点不会出错,但如果你传递了不正确的正文,其他人会
打开App,查看更多内容
随时随地看视频慕课网APP