为什么颁发的 ACM 证书的 CNAME 记录未解析,且 DNS 验证状态停留在待验证?

2 分钟阅读
0

我使用 DNS 验证方式请求了一个新的 AWS Certificate Manager(ACM)证书。但 CNAME 记录未解析,且状态停留在待验证。

简短描述

当您使用 DNS 验证请求 ACM 证书时,ACM 会为证书的域范围中指定的每个域名提供一个 CNAME 记录。您必须将 CNAME 记录添加到您的 DNS 配置中。ACM 使用 CNAME 记录来验证域的所有权。所有域验证完成后,证书的状态将从待****验证变为成功

如果有下列任何情况,使用 DNS 验证方式请求的证书可能会停留在待验证状态:

  • CNAME 记录未添加到正确的 DNS 配置中。
  • CNAME 记录含有多余的字符或有缺失的字符。
  • CNAME 记录已添加到正确的 DNS 配置中,但 DNS 提供商自动将裸域添加到 DNS 记录的末尾。
  • 同一个域名存在一条 CNAME 记录和一条 TXT 记录。

**注意:**ACM 会定期检查 DNS 记录。此过程不能手动检查。

有关更多信息,请参阅 DNS 验证

解决方法

CNAME 记录未添加到正确的 DNS 配置

要确认 CNAME 记录是否已正确添加到 DNS 配置中,请运行类似以下内容的命令:

**注意:**将 example-cname.example.com 替换为您的 ACM CNAME 记录。

Linux 和 macOS:

dig +short _example-cname.example.com

Windows:

nslookup -type=cname _example-cname.example.com

如果 CNAME 记录已经添加到正确的 DNS 配置中并成功传播,命令将在输出中返回 CNAME 记录的值。

**注意:**某些 DNS 提供商可能需要 24-48 小时才会传播 DNS 记录。

如果您的证书处于待验证状态,请确认 ACM 提供的 CNAME 记录已添加到正确的 DNS 配置中。要确定应将 CNAME 记录添加到哪个 DNS 配置中,请运行类似以下内容的命令:

Linux 和 macOS:

dig NS example.com

Windows:

nslookup -type=ns example.com

命令将提供正确的 DNS 配置中的 NS 记录包含的名称服务器。请务必确保添加到您的 DNS 配置中的 CNAME 记录包含一条 NS 记录,该记录中包含命令输出中提供的名称服务器。

有关将 CNAME 记录添加到 Amazon Route 53 托管区域的更多信息,请参阅使用 Route 53 控制台创建记录

**注意:**当相应的 CNAME 记录位于 Route 53 私有托管区域中时,不可以验证域的所有权。CNAME 记录必须位于公共托管区域中。

CNAME 记录含有多余的字符或有字符缺失

确保添加到 DNS 配置的 CNAME 记录中的名称或值不包含任何多余的字符或没有字符缺失。

CNAME 记录已添加到正确的 DNS 配置中,但 DNS 提供商自动将裸域添加到 DNS 记录的末尾

某些 DNS 提供商可能会在所有 DNS 记录名称字段的末尾自动添加裸域。在这种情况下,CNAME 记录添加到您的 DNS 配置后的传播结果将与以下内容类似:

_example-cname.example.com.example.com

由于 CNAME 记录名称与 ACM 提供的记录名称不匹配,因此验证失败。ACM 证书停留在待验证状态,直到请求证书 72 小时后验证失败。

要确定 DNS 提供商是否会在 CNAME 记录的末尾自动添加裸域,请运行类似以下内容的命令:

Linux 和 macOS:

dig +short _example-cname.example.com.example.com

Windows:

nslookup -type=cname _example-cname.example.com.example.com

如果输出返回了 CNAME 记录的值,则说明 DNS 提供商添加了裸域。而且是在 DNS 记录的名称字段末尾添加了裸域。

要解决此问题,请编辑 CNAME 记录以从您为名称字段输入的文本中移除裸域。

在 DNS 提供商添加裸域后,将只有一个裸域存在。

同一个域名存在一条 CNAME 记录和一条 TXT 记录

要确认同一个域是否存在 CNAME 记录和 TXT 记录,请运行类似以下内容的命令:

Linux 和 macOS:

dig +short CNAME <cname_record_name>
dig TXT <cname_record_name>

Windows:

nslookup -type=CNAME <cname_record_name>
nslookup -type=TXT <cname_record_name>

比较 CNAME 记录类型和 TXT 记录类型的 dig 命令的输出。如果两个输出相同,则格式错误的记录会使证书处于待验证状态,如外部文档 RFC 1034 中所述。要解决此问题,您可以删除 TXT 记录。

有关详细信息,请参阅排查 DNS 验证问题


相关信息

排查托管证书续订问题

在通过 ACM 托管续订流程验证我的域名以后,为什么我的证书续订仍处于待验证状态?

设置 DNS 验证

相关视频

AWS 官方
AWS 官方已更新 1 年前