让我们使用多个公共 DNS 提供商加密 DNS 挑战

Lar*_*man 5 lets-encrypt certbot

我们使用两个 DNS 提供商来实现冗余。自从 2016 年的 DynDNS DDOS 攻击以来,我希望我们并不孤单。

我正在尝试使用 Let's Encrypt certbot 和 DNS 挑战。拥有两个 DNS 提供商似乎会带来问题。作为质询过程的一部分,两个 DNS 提供商是否都需要使用相同的 TXT 记录进行更新?

真正的问题是,Let's Encrypt ACME 证书颁发机构 (CA) 如何验证 DNS TXT 条目?它是像任何客户端一样简单地查询公共 DNS,还是查询映射到我正在使用的 certbot 插件的特定 DNS 提供商?我怀疑是前者。

我试图仅使用其中一个插件创建证书。TXT 条目已创建,但验证失败。我希望我需要更新两个 DNS 提供商(或弄清楚如何链接这两个提供商,以便它们同步更改)。

文档似乎没有表明可以使用多个相同类型的插件,尽管我还没有尝试过。我的一个提供商要求我升级才能访问他们的 API。

如果无法链接多个身份验证插件,那么我相信我自动续订的唯一选择是使用带有自定义脚本的前置和后置挂钩来修改两个 DNS 提供商。

在我承担所需的工作和费用(或选择手动管理续订过程)之前,我很感激对此进行确认。

编辑:我知道 StackExchange 编写并发布了它自己的开源 DNS 更新程序dnscontrol,它可用于挂钩前和挂钩后脚本。但是,不支持我们的提供商之一。

anx*_*anx 2

Letsencrypt 仅通过查询随机解析器来验证您的 TXT 条目,而无法控制将使用哪一个名称服务器。

我建议您将该_acme-challenge.example.com.区域委托给您可以自动访问的唯一一个 DNS 提供商。您的任何 DNS 提供商遇到 DoS 情况的时间都不会超过更改此设置所需的时间 - 或超过 LetsEncrypt 证书的有效时间。因此,可以只跳过 ACME 的冗余,这样您就可以像添加更多名称服务器之前一样使用所有自动化。

根据评论进行编辑:此策略将不允许继续 certbot,因为相应的 certbot 插件无法正确处理别名或委托验证域。它应该修改验证记录的区域,但尝试修改已验证域的区域,忽略它是否非常有效并且它们不同。

其他 acme 客户端可能需要明确说明验证记录的位置,就像 acme.sh 的情况一样