如何在新子域跨 AWS 账户上创建和验证 AWS 公共证书?

问题描述

我有权访问属于某个客户的多个 AWS 账户,并想使用 DNS 验证设置公共证书。我相信这意味着我也需要设置 DNS。

我有两个帐户:

  • dsc-staging(包含新证书、子域的本地 DNS)
  • eds-staging(包含新子域的根)

新的证书/DNS 应为:

gatekeeper.s.aws.example.com

这是在帐户 dsc-staging 中设置的。我已经完成了“DNS 验证”选项,它说它正在等待。首先,这两个帐户中都没有此名称的 DNS,因此如果保持这种状态,最终会失败。

因此,在同一个帐户中,我在 Route 53 中创建了一个 HostedZone,它创建了认的 NS 和 SOA 记录。

现在,在另一个帐户 eds-staging 中,有以下记录:

  • s.aws.example.internal(单个值中有四行的 NS 记录)
  • s.aws.example.internal(SOA 记录)

在这里添加了验证记录,作为 CNAME。 (我被告知可以将验证记录放在本地 Route 53 中,但我现在选择在这里做)。

现在,我认为我需要通知 AWS 如何将 gatekeeper.s.aws.example.com 与已知的内部名称 s.aws.example.internal 连接起来,该名称已经存在并被其他事物使用。我相信将两者联系起来的过程叫做“委托”。我得到了一些说明,从本地帐户 gatekeeper.s.aws.example.com 获取 NS 记录并将它们复制到另一个帐户中的父域 s.aws.example.internal

然而,Route 53 中的 AWS UI 似乎不允许添加一个 NS 记录 - 是因为一个已经存在吗?如果是这样,我可以将我的四条记录添加到现有的四条记录下(即在同一条记录中)吗?

我相信,如果我连接此 DNS 使其可解析,则证书将自动变为可验证状态,而这将自动发生。这个假设正确吗?

解决方法

我会这样分解:

  1. 注册域或将域转移到您的 AWS 主计费账户。这是注册域的唯一帐户。

  2. 在每个子帐户(例如 dev prod)中,为步骤 1 中提供的顶级域创建一个 R53 托管区域。确保将步骤 1 中的 NS 服务器分配到此处的区域。请密切注意他们在名称和服务器数量上都达成一致 - 通常为 4。

  3. 为根和通配符域 EG example.com 和 *.example.com 创建 ACM 证书请求。请求 DNS 验证。这里的关键是包括通配符。这意味着它适用于域中的任何主机名。

  4. 在 ACM 中,请求服务为您创建 R53 验证 DNS 记录。仅当您在同一帐户中完成了第 2 步时,才可能这样做。

  5. 等待批准。可能需要几分钟,到一整天。每隔一小时左右回来查看。

如果严格遵循此流程,将始终提供经过验证的 ACM 证书,适用于任何 AWS 支持的服务,包括根域和其下的任何子主机。