我想通过 为我的网站创建通配符 SSL LetsEncrypt
。我按照说明操作,运行 后Certbot
,它给了我一个 DNS 挑战并显示:
Please deploy a DNS TXT record under the name
_acme-challenge.db.example.com with the following value:
jn324jr348r342bhr234hrou234nbr4324fj34r
db.example.com 也在里面/etc/bind/
。
我所做的是打开db.example.com
并在底线添加以下内容:
_acme-challenge.db.example.com 3600 IN TXT "jn324jr348r342bhr234hrou234nbr4324fj34r"
但当我像这样检查时:
nslookup -type=TXT _acme-challenge.example.com
它给了我这个错误:
- The following errors were reported by the server:
Domain: db.example.com
Type: dns
Detail: DNS problem: NXDOMAIN looking up TXT for
_acme-challenge.db.example.com - check that a DNS record
exists for this domain
ubuntu@me-1:/etc/bind$ nslookup -type=TXT _acme-challenge.example.com
Server: 127.0.0.53
Address: 127.0.0.53#53
** server can't find _acme-challenge.example.com: NXDOMAIN
当我运行 Certbot 时也出现错误:
Some challenges have failed.
IMPORTANT NOTES:
- The following errors were reported by the server:
Domain: db.example.com
Type: dns
Detail: DNS problem: NXDOMAIN looking up TXT for
_acme-challenge.db.example.com - check that a DNS record
exists for this domain
我在这里做错了什么?
答案1
请注意,您必须等待一段时间,直到 DNS 区域中的更改在全球服务器上更新。您的问题是您试图检查更改是否应用到 DNS 太快。有一个很好的方法可以解决这种情况,它需要使用 DNS 提供商的 API。如果您使用 OVH,您可以使用他们的 API 进行 DNS 更改,certbot 将能够立即检查更改。这里有所有 API 插件的列表: https://certbot.eff.org/docs/using.html?highlight=dns#dns-plugins
如果您的 DNS 提供商不支持此功能,请尝试将您的 DNS 区域移至 Cloudflare。这非常简单,而且您可以免费获得该服务。此外,通过使用 DNS API,您可以通过在 cron 中留下一个命令来免费续订通配符证书,如下所示:
0 1 20 * * root certbot certonly --non-interactive -d example.com -d '*.example.com' --dns-cloudflare --dns-cloudflare-credentials /my/secret/api/key/location
答案2
请注意,在区域文件中,不以点结尾的名称.
是相对的,通常相对于当前域。
_acme-challenge.db.example.com
因此,区域内的条目db.example.com
实际上意味着_acme-challenge.db.example.com.db.example.com.
为了确保您输入正确的信息,您可以:
在末尾添加一个点:
_acme-challenge.db.example.com.
或者不包括域名:
_acme-challenge
这是基于 的区域db.example.com
,如果 区域为 ,情况会略有不同example.com
。
更新区域时,也不要忘记更新区域的序列(在 SOA 记录中),然后重新加载区域。
这当然是基于您的域名的注册名称服务器是您自己的服务器(和辅助服务器)。
当使用nslookup
或查询dig
时,您可以告诉他们从哪个服务器询问答案。始终先检查主服务器,然后检查辅助服务器,然后再检查其他服务器。并且不要忘记某些类型的更新可能需要一段时间(尤其是受上一条记录的 TTL 限制的更改,以及受域的负缓存 TTL 限制的添加)。