如何验证 Route 53 的 ACM 证书?

上次更新日期:2021 年 4 月 20 日

如何验证来自 Amazon Route 53 的 AWS Certificate Manager (ACM) 证书?

简短描述

有两种方法可以验证 ACM 证书的域所有权:

1.    DNS 验证

2.    电子邮件验证

当您使用 DNS 验证方式请求 ACM 证书时,ACM 会提供一条 CNAME 记录,您必须将它添加到您的 DNS 配置中。ACM 使用该 CNAME 记录来验证域的所有权。域所有权验证完成后,证书的状态将从待验证变为已颁发

解决方法

注意:如果您在运行 AWS 命令行界面 (AWS CLI) 命令时遇到错误,请确保您使用的是最新版的 AWS CLI

如果您使用 Route 53 作为 ACM 证书中请求的域的 DNS 服务提供者,则可以使用 ACM 控制台中提供的一键式选项创建 CNAME。选择此选项时,该记录将自动添加到域的 Route 53 托管区域中。

但是,如果存在以下任一情况,则必须手动添加 CNAME 记录:

  • 同一个域有多个托管区域
  • 托管区域位于不同的账户中

顶级域证书请求

确定名称服务器 (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-1992.awsdns-57.co.uk.
example.com. 300 IN NS ns-290.awsdns-36.com.
example.com. 300 IN NS ns-547.awsdns-04.net.
example.com. 300 IN NS ns-1200.awsdns-22.org.

在 Route 53 中添加 CNAME 记录

使用 NS 值确定适当的托管区域后,将 CNAME 记录添加到该区域:

1.    打开 Route 53 控制台

2.    导航到域的托管区域。此托管区域必须具有与您在上一任务中确定的名称服务器相同的 NS 记录。

3.    选择 Create Record (创建记录)

4.    对于 Name (名称),输入 ACM 生成的 CNAME 的 Record Name (记录名称)(不包括域部分)。有关更多信息,请参阅 ACM 的 CNAME 记录的工作原理是什么

5.    对于 Value (值),输入 ACM 提供的完整 Record Value (记录值)

6.    对于 Record type (记录类型),选择 CNAME - Routes traffic to another domain name and to some AWS resources (CNAME – 将流量路由到另一域名和部分 AWS 资源)

7.    对于 Route Policy (路由策略),选择 Simple routing (简单路由)

8.    选择 Create Records (创建记录)

验证 CNAME 记录的解析

要确认 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 记录已经添加到正确的 DNS 配置中并成功传播,命令将在输出中返回 CNAME 记录的值。

子域证书请求

如果您的子域具有单独的托管区域:

按照上述步骤执行顶级域证书请求,并在命令中将域名替换为子域以确定子域的 NS 记录。

如果您收到包含 NS 值的输出,请在与输出的 NS 值匹配的子域托管区域中添加 CNAME 记录。

如果您在运行命令后没有收到 NS 记录,请确保在顶级域和子域之间配置了适当的子域委派。为此,请在顶级域的托管区域中创建包含子域 NS 记录的资源记录。有关更多信息,请参阅如何为通过 Route 53 托管的域创建子域?

如果您的子域没有单独的托管区域:

如果子域没有单独的托管区域,请在顶级域的托管区域中添加 CNAME 记录。然后,使用上述顶级域证书请求步骤验证 CNAME 记录是否按预期解析。

注意:如果 DNS 配置中最近有更改,您可能会遇到基于 TTL 值的传播延迟


这篇文章对您有帮助吗?


您是否需要账单或技术支持?