![我向 AWS Route 53 发布了域挑战 TXT 记录,但 Let's Encrypt 看不到它](https://linux22.com/image/747215/%E6%88%91%E5%90%91%20AWS%20Route%2053%20%E5%8F%91%E5%B8%83%E4%BA%86%E5%9F%9F%E6%8C%91%E6%88%98%20TXT%20%E8%AE%B0%E5%BD%95%EF%BC%8C%E4%BD%86%20Let's%20Encrypt%20%E7%9C%8B%E4%B8%8D%E5%88%B0%E5%AE%83.png)
我最终在给我带来麻烦的 AWS EC2 Linux 实例上安装了 certbot-auto,并且我正尝试从 Let's Encrypt 获取通配符证书。
我被告知要以名称(为保护无辜者而更改)_acme-challenge.foo.bar.net 创建一个 TXT 记录,并指定一个值。
因此,我转到 Route 53 控制台页面,并选择 bar.net 托管区域。我添加 _acme-challenge.foo.bar.net 记录,并指定值,单击“保存记录集”,等待几分钟。然后我选择它,然后单击“测试记录集”,Route 53 认为它已发布。
但是当我告诉 certbot-auto 继续,并且 Let's Encrypt 查找记录时,它不存在。如果我执行 nslookup -q=txt _acme-challenge.foo.bar.net,我会得到
服务器找不到 _acme-challenge.foo.bar.net
对于 nslookup -q=txt foo.bar.net,我得到
服务器找不到 foo.bar.net
然而,如果我对 foo.bar.net 进行常规 nslookup,我就会找到它。
出了什么问题?
答案1
我找到问题的根源了。
在交叉检查 NS 记录中列出的服务器时,我偶然注意到 TXT 记录上的名称不是(名称仍然更改以保护无辜者)
_acme-challenge.foo.bar.net
但
_acme-challenge.foo.bar.net.bar.net
我没有注意到 Route 53 控制台的记录集编辑器将托管区域的域名放在输入记录集名称的字段右侧,然后将其附加到您输入的内容中。所以我输入了整个记录名称,因此两次输入了“.bar.net”,一次是显式输入,一次是隐式输入。
引用一位名叫蒙哥马利·斯科特的虚构工程师首先说出的一句话,
你越是过度思考管道,排水管就越容易被堵塞。