DNS 名称为 _acme-challenge.mybar.org 的 RRSet。在区域 bar.org 中是不允许的。 while letsencrypt 证书生成

RRSet with DNS name _acme-challenge.mybar.org. is not permitted in zone bar.org. while letsencrypt certificate generation

我在aws route53中有两个域名:

 bar.org
 mybar.org

我正在尝试使用基于 ruby 的 dns-01 挑战钩子生成 Letsencrypt 证书 (https://gist.github.com/joshgarnett/02920846fea35f738d3370fd991bb0e0)

我正在为域 "mybar.org" 生成证书,因此我的 domains.txt 包含的名称为:

mybar.org

当我尝试 运行 dehydrated -c 时出现以下错误:

RRSet with DNS name _acme-challenge.mybar.org. is not permitted in zone bar.org.

为什么它尝试在 bar.org 而不是我的 bar.org 中添加 RRSet?我如何让它工作?

ruby 问题中链接的基于 dns 挂钩在 find_hosted_zone 函数的下一行有一个错误,同时从可用的 Route53 区域中查找托管区域索引。

index = hosted_zones.index { |zone| domain.end_with?(zone.name.chop) }

索引是根据以给定域名结尾的区域派生的。由于我的域名 "mybar.org" 对 "bar.org"(其他可用区域)评估为真,因此它是该区域的 returns 索引。所以这需要一个PR来解决问题。

在我的例子中,当我将代码修改为:

时它工作正常

index = hosted_zones.index { |zone| zone.name.chop.end_with?(domain) }