问题描述
在 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 服务器通信,但亚马逊(验证所有权)不会这样做。