为 CloudFront 分配租户申请证书
创建分配租户时,该租户从多租户分配继承共享 AWS Certificate Manager(ACM)证书。此共享证书为与多租户分配关联的所有租户提供 HTTPS。
在创建或更新 CloudFront 分配租户以添加域时,可以从 ACM 添加托管式 CloudFront 证书。然后,CloudFront 将代表您从 ACM 获得经 HTTP 验证的证书。可以将此租户级别 ACM 证书用于自定义域配置。CloudFront 简化了续订工作流程,有助于将证书保持为最新状态并确保内容交付不间断。
注意
您拥有证书,但它只能与 CloudFront 资源结合使用,并且无法导出私有密钥。
可以在创建或更新分配租户时申请证书。
选择如何提供证书验证令牌
通过 API 或 AWS CLI 为分配租户请求托管式证书时,请在 ManagedCertificateRequest 中指定 ValidationTokenHost。根据由谁提供 HTTP 验证令牌来选择相应的值。
这两个选项均会请求一个 CloudFront 托管式 ACM 证书。该参数仅控制提供验证令牌的位置。
- CloudFront 托管 (
cloudfront) -
CloudFront 自动提供 HTTP 验证令牌。当域没有现有流量,或者您可以立即将其 DNS 指向 CloudFront 时,请选择此选项。
- 自托管 (
self-hosted) -
您可以从现有基础设施提供 HTTP 验证令牌。当您迁移具有现有流量的域时,请选择此选项。可以在将 DNS 指向 CloudFront 之前颁发证书。您可以将令牌文件上传到现有服务器,也可以配置 HTTP 301(永久)重定向,来将验证请求转发到 ACM 验证端点。
有关完成域所有权设置的说明,请参阅完成域设置。如果您选择 cloudfront,请选择我没有流量。如果您选择 self-hosted,请选择我有现有流量。
有关 API 值的更多信息,请参阅《CloudFront API 参考》中的 ManagedCertificateRequest。
添加域和证书(分配租户)
以下过程演示了如何为分配租户添加域和更新证书。
添加域和证书(分配租户)
登录 AWS 管理控制台,并通过以下网址打开 CloudFront 控制台:https://console.aws.amazon.com/cloudfront/v4/home
。 -
在 SaaS 下,选择分配租户。
-
搜索分配租户。使用搜索栏中的下拉菜单,按域、名称、分配 ID、证书 ID、连接组 ID 或 Web ACL ID 进行筛选。
-
选择分配租户名称。
对于域,选择管理域。
-
对于证书,选择是否要为分配租户使用自定义 TLS 证书。该证书会验证您是否获得授权可使用该域名。该证书必须存在于美国东部(弗吉尼亚州北部)区域中。
-
对于域,选择添加域并输入域名。根据您的域,以下消息将出现在您输入的域名下方。
-
证书涵盖此域。
-
证书涵盖此域,等待验证。
-
证书不涵盖此域。(这意味着您必须验证域所有权。)
-
-
选择更新分配租户。
在租户详细信息页面的域之下,您可以看到以下字段:
-
域所有权:域所有权的状态。在 CloudFront 可以提供内容之前,必须使用 TLS 证书验证来验证域所有权。
-
DNS 状态:域的 DNS 记录必须指向 CloudFront,才能正确地路由流量。
-
-
如果域所有权未得以验证,请在租户详细信息页面的域之下,选择完成域设置,然后完成以下过程来将 DNS 记录指向您的 CloudFront 域名。
完成域设置
按照这些过程来验证您拥有分配租户的域。根据您的域,选择以下过程之一。
注意
如果域已使用 Amazon Route 53 别名记录指向 CloudFront,则必须在域名前面添加带有 _cf-challenge. 的 DNS TXT 记录。此 TXT 记录可验证域名是否已关联到 CloudFront。对每个域重复此步骤。以下内容显示如何更新 TXT 记录:
-
记录名称:
_cf-challenge.DomainName -
记录类型:
TXT -
记录值:
CloudFrontRoutingEndpoint
例如,TXT 记录类似于:_cf-challenge.example.com TXT
d111111abcdef8.cloudfront.net
您可以在控制台中的分配租户详细信息页面上找到 CloudFront 路由端点,也可以使用《Amazon CloudFront API Reference》中的 ListConnectionGroups API 操作来找到该端点。
提示
如果您是 SaaS 提供商,并且想要在不要求客户(租户)直接向其 DNS 中添加 TXT 记录的情况下支持证书颁发,请执行以下操作:
-
如果您拥有域
example-saas-provider.com,请将子域分配给您的租户,例如customer-123.example-saas-provider.com -
在 DNS 中,将
_cf-challenge.customer-123.example-saas-provider.com TXT d111111abcdef8.cloudfront.netTXT 记录添加到 DNS 配置中。 -
接下来,您的客户(租户)可以更新其自己的 DNS 记录,以便将其域名映射到您提供的子域。
www.customer-domain.com CNAME customer-123.example-saas-provider.com
将域指向 CloudFront
更新您的 DNS 记录,以便将来自每个域的流量路由到 CloudFront 路由端点。您可以有多个域名,但它们必须全部解析到此端点。
将域指向 CloudFront
-
复制 CloudFront 路由端点值,例如 d111111abcdef8.cloudfront.net。
-
更新您的 DNS 记录,以便将来自每个域的流量路由到 CloudFront 路由端点。
登录到域注册商或 DNS 提供商管理控制台。
导航到域的 DNS 管理部分。
对于子域:创建 CNAME 记录。例如:
名称:子域(例如
www或app)值/目标:CloudFront 路由端点
记录类型:CNAME
TTL:3600(或任何适合用例的值)
对于顶级域/根域:这需要唯一的 DNS 配置,因为不能在根域或顶级域级别使用标准 CNAME 记录。由于大多数 DNS 提供商不支持 ALIAS 记录,因此建议在 Route 53 中创建 ALIAS 记录。例如:
名称:顶级域(例如
example.com)记录类型:A
别名:是
别名目标:CloudFront 路由端点
路由策略:简单(或任何适合用例的策略)
验证 DNS 更改是否已传播。(这通常在 TTL 过期时发生。有时可能需要 24-48 小时。) 使用
dig或nslookup之类的工具。dig www.example.com # Should eventually return a CNAME pointing to your CloudFront routing endpoint
-
返回 CloudFront 控制台并选择提交。当域处于活动状态时,CloudFront 会更新域状态,以表明域已准备好提供流量。
有关更多信息,请参阅 DNS 提供商的文档:
域注意事项(分配租户)
当域处于活动状态时,域控制已建立,CloudFront 将响应查看器对该域的所有请求。一旦激活,域就无法停用或更改为非活动状态。当域已在使用中时,该域无法与其它 CloudFront 资源关联。要将该域与其它分配相关联,请使用 UpdateDomainAssociation 请求将该域从一个 CloudFront 资源移到另一个 CloudFront 资源。
当域处于非活动状态时,CloudFront 将不会响应查看器对该域的请求。当域处于非活动状态时,请注意以下情况:
-
如果您有待处理的证书请求,CloudFront 将响应对已知路径的请求。当请求处于待处理状态时,域无法与任何其它 CloudFront 资源关联。
-
如果您没有待处理的证书请求,CloudFront 将不会响应对该域的请求。可以将该域与其它 CloudFront 资源相关联。
-
对于每个分配租户,您只能有一个待处理的证书请求。您必须先取消现有待处理的请求,然后才能为其它域请求另一个证书。取消现有证书请求不会删除关联的 ACM 证书。可以使用 ACM API 将其删除。
-
如果您将新证书应用于分配租户,这将取消与先前证书的关联。可以重用该证书来涵盖其它分配租户的域。
与续订经 DNS 验证的证书一样,当证书续订成功时,您会收到通知。然而,您不需要做任何其它事情。CloudFront 将自动管理域的证书续订。
注意
您无需调用 ACM API 操作,即可创建或更新证书资源。您可以通过使用 CreateDistributionTenant 和 UpdateDistributionTenant API 操作来管理证书,以便为托管式证书请求指定详细信息。
注意
地理限制兼容性:CloudFront 托管式证书验证与地理限制兼容。当您对使用 CloudFront 托管式证书的分配启用地理限制时,会将验证请求排除在地理限制规则之外。证书颁发机构从多个地理上分布的网络视角验证域所有权(多视角颁发证实),以防止 BGP 劫持。无论您屏蔽或支持哪些国家/地区,CloudFront 都确保这些验证请求取得成功。
使用此功能无需任何操作。如果您之前移除了地理限制作为证书验证失败的解决方法,则可以安全地重新应用它们。
通配符域(分配租户)
在以下情况下,分配租户支持通配符域:
当通配符包含在从父多租户分配继承的共享证书中时
当您为分配租户使用有效的现有自定义 TLS 证书时