我想验证来自 Amazon Route 53 的 AWS Certificate Manager(ACM)证书。
简短描述
有两种方法可以验证 ACM 证书的域所有权:
- DNS 验证
- 电子邮件验证
当您使用 DNS 验证来申请 ACM 证书时,ACM 会提供一个 CNAME 记录,您必须将其添加到 DNS 配置中。ACM 使用 CNAME 记录来验证域的所有权。在 ACM 验证域所有权后,证书状态从待验证更新为已颁发。
解决方法
**注意:**如果在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请确保您使用的是最新的 AWS CLI 版本。
如果 Route 53 是域的 DNS 服务提供商,则可以在 ACM 控制台中使用一键选项来创建 CNAME。当您选择此选项时,ACM 会自动将记录添加到域的 Route 53 托管区。
但如果存在以下任一情况,则必须手动添加 CNAME 记录:
Apex 域证书申请
确定名称服务器(NS)记录
1. 要查找相应托管区的 DNS 配置,请运行下列命令:
对于 Linux 和 macOS:
$ dig NS example.com
对于 Windows:
$ nslookup -type=ns example.com
**注意:**请将 example.com 替换为您的域名。
2. 此命令提供域的 DNS 配置的名称服务器(NS)记录中包含的名称服务器。将 CNAME 记录添加到 Route 53 托管区,该区域的 NS 记录与输出中的名称服务器相同。
下面是示例输出:
$ dig example.com NS
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.amzn2.0.2 <<>> example.com
NS
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56071
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.com. IN NS
;; ANSWER SECTION:
example.com. 300 IN NS ns-199x.awsdns-xx.co.uk.
example.com. 300 IN NS ns-29x.awsdns-xx.com.
example.com. 300 IN NS ns-54x.awsdns-xx.net.
example.com. 300 IN NS ns-120x.awsdns-xx.org.
在 Route 53 中添加 CNAME 记录
使用 NS 值确定相应的托管区后,向其添加您的 CNAME 记录:
1. 打开 Route 53 控制台。
2. 导航到您的域的托管区。此托管区必须具有与您在上一任务中确定的名称服务器相同的 NS 记录。
3. 选择创建记录。
4. 对于名称,输入 ACM 生成的 CNAME 的记录名称,不包括域部分。有关详细信息,请参阅 ACM 的 CNAME 记录的工作原理。
5. 对于值,输入 ACM 提供的完整记录值。
6. 对于记录类型,选择 CNAME - 将流量路由到其他域名和某些 AWS 资源。
7. 对于路由策略,选择简单路由。
8. 选择创建记录。
验证 CNAME 记录的解析
要确认 Route 53 已将 CNAME 记录添加到您的 DNS 配置,请运行与以下示例类似的命令:
对于 Linux 和 macOS:
dig +short _example-cname.example.com
对于 Windows:
nslookup -type=cname _example-cname.example.com
**注意:**请将 example-cname.example.com 替换为您的 ACM CNAME 记录。
如果您成功添加并传播了 CNAME 记录,则该命令将在输出中返回 CNAME 记录的值。
子域证书申请
您的子域有一个单独的托管区
按照前面描述的顶点域证书申请步骤进行操作,并确定子域的 NS 记录。要执行此操作,请将域名替换为命令中的子域。
如果您收到带有 NS 值的输出,请在子域的托管区中添加 CNAME 记录,用以匹配输出的 NS 值。
如果您在运行命令后没有收到 NS 记录,请验证您在顶点域和子域之间是否正确配置了子域委派。为此,请在顶点域的托管区中使用子域的 NS 记录创建资源记录。有关详细信息,请参阅如何为通过 Route 53 托管的域创建子域?
子域没有单独的托管区
如果子域没有单独的托管区,请在顶点域的托管区中添加 CNAME 记录。然后,使用前面描述的顶点域证书申请的步骤来验证 CNAME 记录是否按预期解析。
**注意:**如果 DNS 配置最近发生了变化,您可能会遇到基于 TTL 值的传播延迟。