几个月来,我一直在几个域名上使用 Let's Encrypt,总体来说运行良好。我正在更新证书,其中一个域名出现以下错误消息(在 处返回的 JSON 对象中challenges[1].error.detail
):
DNS 问题:查询 [somedomain.com] 的 CAA 时超时
我尝试查找错误,但谷歌也找不到任何结果(截至撰写本文时)。对于反对者:是的,这个域名(与错误消息中显示的完全一致)是有效的,并且完全可以访问,并且可以从远处 ping 通。
然而,这里有一个重要的困境(线索),即为什么会出现这种情况。我已将此域的设置设置为将所有流量重定向到 HTTPS当我第一次尝试续订这个特定域名时。LE 似乎尝试通过 HTTPS 访问服务器,但失败了。从那时起,我更改了服务器设置,以便域不会重定向到 acme-challenge 文件夹的 HTTPS。问题似乎是 LE 记得之前的请求被重定向了,现在它不想访问 HTTP URL。有challenges[1].validationRecord
两个条目,一个在 [0] 表示 HTTP,一个在 [1] 表示 HTTPS,因此显然 LE 知道也可以通过 HTTP 地址访问服务器。此外,我可以通过给出的 URL 访问验证检查文件(在相关域上),challenges[1].validationRecord[0].url
没有任何问题。
我的问题是:如何让 LE 忘记我尝试请求证书,同时将服务器设置为将所有流量重定向到 HTTPS?因此,如何让 LE 使用 HTTP URL?
答案1
Let's Encrypt 不会跟踪之前的重定向。您可以使用 HTTP 或 HTTPs 版本进行验证。
您的错误凸显了另一个问题
DNS 问题:查询 [somedomain.com] 的 CAA 时超时
验证系统无法完成域的 DNS 查找。可能是您使用的 DNS 提供商出现了问题,或者 Let's Encrypt 服务器和您的服务器之间的路由出现了网络问题。
这是一个类似问题,在官方 LE 社区论坛上有描述。
我认为问题出在 DN 查找步骤上。没有 CAA 记录。不知何故域名服务器花了很长时间才做出响应。以下是 Osiris 发送给我的一些结果。他提到获取 IP 很快,但“最后一步通常很慢”。速度慢可能是 CAA 检查步骤失败的原因。
和
根据原始错误和这些时间,您使用的 DNS 服务器或从 Let's Encrypt 数据中心到它们的路由很可能存在一些问题,从而导致超时。
调查您的 DNS 设置,如果查找成功,请稍后重试提交证书请求。
答案2
最新版本的 acme 客户端通常会显示超时的目标 ip。看来客户端在证书请求例程期间向不同的名称服务器发出查询。这些服务器包括但不限于机器的默认 DNS 服务器,以及您正在使用的域的权威名称服务器。
我曾见过这样的情况,在网络连接完美的情况下,通往权威名称服务器的路由却被公司防火墙阻止了。(我知道,这很奇怪)。因此,虽然所有名称(包括这个特定域)都完美解析,但当 acme 客户端尝试直接联系权威名称服务器时,该过程失败了。通过更改防火墙规则让请求通过,这个问题得到了解决。
因此对于 2018 年及以后 - 查看日志,它们通常会告诉您哪个 IP 地址超时并检查从 acme 客户端到该地址的连接。
答案3
切换到新的服务器机器(不同的 IP)后出现此错误。
当renew
命令因上述错误而失败时。
使用certonly
命令运行 certbot 有效(不知道为什么!)。