腾讯云 `API` 服务 `Let's Encrypt` 证书 `Renew` 失败

2018-11-13 19:20:28 +08:00
 zealzz

一年多了之前 Renew 都是正常的,就在双十一当天 Renew 一直失败,各位 V 友有遇到这种情况吗?有思路的给个提示,下面是部分信息。

  1. 子域 api.xxxx.xx,域名在阿里云管理,DNS 配的 A 记录
  2. 使用的 standalone 模式, Renew 前已经把本地的 Nginx 关闭了。80、443 端口没被占用
  3. 把服务器重启后 Renew 也是一样的错
  4. 网上也看到一些类似情况,但也解决不了

部分错误日志如下:

{
  "identifier": {
    "type": "dns",
    "value": "api.xxxx.xx"
  },
  "status": "invalid",
  "expires": "2018-11-18T15:33:56Z",
  "challenges": [
    {
      "type": "http-01",
      "status": "invalid",
      "error": {
        "type": "urn:ietf:params:acme:error:connection",
        "detail": "Fetching http://api.xxxx.xx/.well-known/acme-challenge/xxxxxxxx: Error getting validation data",
        "status": 400
      },
      "url": "https://acme-v02.api.letsencrypt.org/acme/challenge/jgMy9WxHILHaUScF9joUpdXZ7uCRDSM2mabGDDn_22k/9189513629",
      "token": "xxxxxxxx",
      "validationRecord": [
        {
          "url": "http://api.xxxx.xx/.well-known/acme-challenge/xxxxxxxx",
          "hostname": "api.xxxx.xx",
          "port": "80",
          "addressesResolved": [
            "xx.xxx.xx.xx"
          ],
          "addressUsed": "xx.xxx.xx.xx"
        }
      ]
    }
  ]
}
2018-11-11 23:35:02,624:DEBUG:certbot.reporter:Reporting to user: The following errors were reported by the server:

Attempting to renew cert (api.xxxx.xx) from /etc/letsencrypt/renewal/api.xxxx.xx.conf produced an unexpected error: Failed authorization procedure. api.xxxx.xx ( http-01): urn:ietf:params:acme:error:connection :: The server could not connect to the client to verify the domain :: Fetching http://api.xxxx.xx/.well-known/acme-challenge/k9NoezsP97OBAnv0hP_a6jbV_9OKhFey5QOqt9ON2nk: Error getting validation data. Skipping.
All renewal attempts failed. The following certs could not be renewed:
  /etc/letsencrypt/live/api.xxxx.xx/fullchain.pem (failure)
4949 次点击
所在节点    程序员
19 条回复
Cherishxxyy
2018-11-13 20:40:03 +08:00
根据你的描述判断,你用的是 Let's Encrypt 的 SSL 证书,使用的是阿里云的域名,不知道用的是哪家的服务器,但是该问题可能出在你的 DNS or SSL 证书 or Nginx 配置,这个和腾讯云没多大关系吧。。。
Dk2014
2018-11-13 20:46:48 +08:00
acme 命令呢,不清楚你这到底是用哪个模式
ahu
2018-11-13 21:03:58 +08:00
不知道双十一当天腾讯的 dns 挂了吗?那怎么能成功!
ywgx
2018-11-13 21:06:02 +08:00
和良心云无关
zealzz
2018-11-13 22:01:17 +08:00
@Cherishxxyy 虚拟机是腾讯云的,实在找不到问题,给腾讯云提了个工单,日志作为附件。小哥给我接了个日志的报错图。我想说我又不瞎能看到啊,感觉也应该和云关系不大,防火墙啥的也没开。真是蛋疼。接下来只能来研究工具的文档了,看看能不能 debug 一下。
zealzz
2018-11-13 22:02:16 +08:00
@Dk2014 大兄弟说的啥模式,standalone 模式呀
zealzz
2018-11-13 22:03:02 +08:00
@ahu DNS 是阿里云的,今天试了一样不行
zealzz
2018-11-13 22:03:39 +08:00
@ywgx 应该是无关,就是找不到问题,蓝瘦
danc
2018-11-13 22:36:59 +08:00
升级 acme,apt update && apt upgrade,关闭 nginx 其他占用 80 和 443 端口的服务,service nginx stop
BOYPT
2018-11-14 00:02:13 +08:00
你自己从第三方访问 http://api.xxxx.xx/能正确返回吗?也有可能你这个域名没备案,被腾讯云墙了。
zealzz
2018-11-14 01:02:15 +08:00
@BOYPT 主域名在阿里云备案了,虚拟机在腾讯云上,证书过期之前访问一直是正常的。我明天吧 https 去掉看看 http 是否能正常访问。
zealzz
2018-11-14 01:03:14 +08:00
@danc 试过了,还是不行😔
zwh2698
2018-11-14 05:59:16 +08:00
删掉,重新申请,就可以
zealzz
2018-11-14 12:41:40 +08:00
@BOYPT 大胸弟,正解。的确是因为备案的原因。因为被腾讯云墙了所以 Letsencrypt 无法验证证书。发现一个方法 使用 tls-sni 可以绕过腾讯云的墙。
zealzz
2018-11-14 12:50:25 +08:00
@zwh2698 是因为备案的原因☹️
realpg
2018-11-14 14:22:32 +08:00
acme.sh 不好么
cloudxns,dnspod 都行
BOYPT
2018-11-14 15:16:29 +08:00
@zealzz #14 另外一个方法是走 dns-01 challenge 啦,这个需要修改 DNS 记录添加 TXT 记录来提供校验;
手工操作太麻烦了,我用 caddy 做服务器,这些都自动化的。然后域名是托在 cloudflare 上,caddy 支持一大堆 DNS 托管服务的自动化签注
zealzz
2018-11-14 15:50:52 +08:00
@BOYPT 赞👍
zealzz
2018-11-14 15:51:33 +08:00
@realpg 赞👍,我找时间研究一下,以便不时之需

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

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

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

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

© 2021 V2EX