ACM 如何使用 CNAME 记录检查域所有权?

问题描述

在 ACM 中,我总是必须注册 ACM 提供的 CNAME 记录。它说它使用这个 CNAME 记录检查域所有权,但它实际上如何检查我在 ACM 中指定的域是否实际上为我所有?任何解释都会很棒!

解决方法

简而言之,证书颁发机构(例如 ACM)将尝试通过公共 DNS 解析您域的 CNAME 记录。之后,它将从 DNS 检索到的值与其内部存储的值(即发送给您的值)进行比较。如果它们匹配,则您的域已通过验证。

用外行的话来说,它会告诉您一个秘密,然后要求您将该秘密展示在您家的窗户上。之后,它会通过您的窗口来检查显示的秘密是否正确。如果是,则意味着您拥有这所房子(或至少可以使用它)。

最好的,斯蒂芬

,

luk2302 已经在评论中解释了这个想法,我会详细说明。

如您所见,ACM 可以使用 DNS 验证来确认特定域的所有权。 在这种情况下,所有权大致定义为“更改官方 DNS 记录的能力”,因此它更像是控制,而不是技术上的所有权。

您如何检查是否有人能够控制域?

您要求他们在域上设置一些包含您创建的值的记录,然后检查这些记录是否存在。如果他们这样做,他们就会控制域。

为什么会这样?

DNS 是一个分层的分布式数据库。 像 stackoverflow.com. 这样的 DNS 记录(最后一个点是有意的,但通常被省略)由从右到左读取的多个级别组成。 右侧的 . 表示根区。 根区保存其正下方的所有记录,即所谓的顶级域 (TLD),如 .com.net.org.com TLD 背后的域名服务器保存着其正下方的所有记录,因此他们知道谁控制着 stackoverflow.com.

如果您从层次结构的顶部开始,然后逐渐向下移动,您会发现哪些服务器拥有一个域。

您可以设置自己的 DNS 服务器并为 stackoverflow.com 创建记录,但没有人会与之交谈并明确查询它,因为它不是层次结构的一部分。您可以将本地 DNS 解析器配置为与您自己的 DNS 服务器通信,但亚马逊(验证所有权)不会这样做。