使用 LetsEncrypt 的通配符 SSL 出现错误

使用 LetsEncrypt 的通配符 SSL 出现错误

我想通过 为我的网站创建通配符 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 限制的添加)。

相关内容