为 CloudFront 分配启用双向 TLS - Amazon CloudFront
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

为 CloudFront 分配启用双向 TLS

先决条件和要求

CloudFront 的双向 TLS 验证模式要求所有客户端在 TLS 握手过程中提供有效证书,并拒绝未使用有效证书的连接。在 CloudFront 分配上启用双向 TLS 之前,请确保:

  • 已使用证书颁发机构证书创建信任存储

  • 已将信任存储与 CloudFront 分配关联

  • 所有分配缓存行为都使用仅 HTTPS 查看器协议策略

  • 分配使用的是 HTTP/2(默认设置,HTTP/3 不支持查看器 mTLS)

注意

双向 TLS 身份验证要求在查看器和 CloudFront 之间建立 HTTPS 连接。您无法在具有任何支持 HTTP 连接的缓存行为的分配上启用 mTLS。

启用双向 TLS(控制台)

对于新的分配

在 CloudFront 控制台中创建新分配的过程中,无法配置查看器 mTLS。首先,通过任意方式(控制台、CLI、API)创建分配,然后根据以下现有分配说明操作,编辑分配设置以启用查看器 mTLS。

对于现有分配

  1. 登录 Amazon Web Services 管理控制台,并通过以下网址打开 CloudFront 控制台:https://console.amazonaws.cn/cloudfront/v4/home

  2. 从分配列表中,选择要修改的分配。

  3. 确保将所有缓存行为的查看器协议策略设置为将 HTTP 重定向到 HTTPS仅 HTTPS。(您可以选择缓存行为选项卡,查看和更新任何使用 HTTP 协议策略的缓存行为。)

  4. 选择常规选项卡。

  5. 设置部分中,选择编辑

  6. 连接性部分中,找到查看器双向身份验证(mTLS)

  7. 启用双向身份验证切换为“开启”状态。

  8. 对于客户端证书验证模式,选择必需(所有客户端都必须提供证书)或可选(客户端可以选择性地提供证书)。

  9. 对于信任存储,选择您之前创建的信任存储。

  10. (可选)如果您希望 CloudFront 在 TLS 握手过程中向客户端发送 CA 名称,请切换公布信任存储 CA 名称

  11. (可选)如果您想允许使用到期证书进行连接,请切换忽略证书到期日期

  12. 选择保存更改

启用双向 TLS(Amazon CLI)

对于新的分配

以下示例演示如何创建包含 mTLS 设置的分配配置文件(distribution-config.json):

{ "CallerReference": "cli-example-1", "Origins": { "Quantity": 1, "Items": [ { "Id": "my-origin", "DomainName": "example.com", "CustomOriginConfig": { "HTTPPort": 80, "HTTPSPort": 443, "OriginProtocolPolicy": "https-only" } } ] }, "DefaultCacheBehavior": { "TargetOriginId": "my-origin", "ViewerProtocolPolicy": "https-only", "MinTTL": 0, "ForwardedValues": { "QueryString": false, "Cookies": { "Forward": "none" } } }, "ViewerCertificate": { "CloudFrontDefaultCertificate": true }, "ViewerMtlsConfig": { "Mode": "required", "TrustStoreConfig": { "TrustStoreId": {TRUST_STORE_ID}, "AdvertiseTrustStoreCaNames": true, "IgnoreCertificateExpiry": true } }, "Enabled": true }

使用以下示例命令创建启用了 mTLS 的分配:

aws cloudfront create-distribution --distribution-config file://distribution-config.json

对于现有分配

使用以下示例命令获取当前分配配置:

aws cloudfront get-distribution-config --id E1A2B3C4D5E6F7 --output json > dist-config.json

编辑文件以添加 mTLS 设置。将以下示例部分配置添加到分配配置:

"ViewerMtlsConfig": { "Mode": "required", "TrustStoreConfig": { "TrustStoreId": {TRUST_STORE_ID}, "AdvertiseTrustStoreCaNames": true, "IgnoreCertificateExpiry": true } }

从文件中删除 ETag 字段,但单独保存其值。

使用以下示例命令,以新配置更新分配:

aws cloudfront update-distribution \ --id E1A2B3C4D5E6F7 \ --if-match YOUR-ETAG-VALUE \ --distribution-config file://dist-config.json

查看器协议策略

在使用双向 TLS 时,必须为所有分配缓存行为配置仅 HTTPS 查看器协议策略:

  • 将 HTTP 重定向到 HTTPS:在执行证书验证之前将 HTTP 请求重定向到 HTTPS。

  • 仅 HTTPS:仅接受 HTTPS 请求并执行证书验证。

注意

由于 HTTP 连接无法执行证书验证,因此双向 TLS 不支持 HTTP 和 HTTPS 查看器协议策略。

后续步骤

在 CloudFront 分配中启用查看器 TLS 后,您可以关联连接函数以实施自定义证书验证逻辑。利用连接函数,您可以通过自定义验证规则、证书吊销检查和日志记录来扩展内置 mTLS 身份验证功能。有关创建和关联连接函数的详细信息,请参阅关联 CloudFront 连接函数