为 CloudFront 分配启用源双向 TLS
通过 Amazon Certificate Manager 获取客户端证书并将原始服务器配置为要求双向 TLS 后,您可以在 CloudFront 分配上启用源 mTLS。
先决条件和要求
在 CloudFront 分配上启用源 mTLS 之前,请确保您具有:
存储在美国东部(弗吉尼亚州北部)区域(us-east-1)的 Amazon Certificate Manager 中的客户端证书
配置为要求双向 TLS 身份验证和验证客户端证书的原始服务器
原始服务器,提供来自公开信任的证书颁发机构的证书
修改 CloudFront 分配的权限
源 mTLS 仅适用于商务版、高级版方案或按实际使用量付费定价方案。
注意
可以为自定义源(包括在 Amazon 外部托管的源)和支持双向 TLS 的 Amazon 源(例如应用程序负载均衡器和 API Gateway)配置源 mTLS。
重要
源 mTLS 不支持以下 CloudFront 功能:
gRPC 流量:启用了源 mTLS 的源不支持 gRPC 协议
WebSocket 连接:启用了源 mTLS 的源不支持 WebSocket 协议
VPC 源:源 mTLS 不能与 VPC 源一起使用
使用 Lambda@Edge 的源请求和源响应触发器:源 mTLS 不支持源请求和源响应位置中的 Lambda@Edge 函数
嵌入式 POP:嵌入式 POP 不支持源 mTLS
启用源 mTLS
每源配置支持您为同一分配中的不同源指定不同的客户端证书。当源有不同的身份验证要求时,这种方法可以提供最大的灵活性。
对于新分配(控制台)
-
登录 Amazon Web Services 管理控制台,并通过以下网址打开 CloudFront 控制台:https://console.amazonaws.cn/cloudfront/v4/home
。 -
选择创建分配
-
选择定价方案:选择商业版或高级版或按实际使用量付费 [免费方案不提供源 mTLS]
-
在“源设置”部分,选择源类型为“其它”
-
在源设置部分,选择自定义源设置
-
配置第一个源(域名、协议等)
-
在源配置中,找到 mTLS
-
将 mTLS 切换为开启
-
对于客户端证书,从 Amazon Certificate Manager 中选择您的证书
-
(可选)添加具有其自己的源 mTLS 配置的其它源
-
填写其余分配设置,然后选择创建分配
对于现有分配(控制台)
登录 Amazon Web Services 管理控制台,并通过以下网址打开 CloudFront 控制台:https://console.amazonaws.cn/cloudfront/v4/home
。 -
从分配列表中,选择要修改的分配。[注意:请确保您的分配采用专业版、高级版或按实际使用量付费定价方案。否则,您必须先升级您的定价方案,然后才能启用源 mTLS]
-
选择源选项卡
-
选择要配置的源,然后选择编辑
-
在源设置中,找到 mTLS
-
将 mTLS 切换为开启
-
对于客户端证书,从 Amazon Certificate Manager 中选择您的证书。[注意:只会列出 EKU(扩展密钥用法)属性设置为“TLS 客户端身份验证”的客户端证书]
-
选择保存更改
-
根据需要对其它源重复此操作
使用 Amazon CLI
对于每源配置,请在每个源的配置中指定源 mTLS 设置:
{ "Origins": { "Quantity": 2, "Items": [ { "Id": "origin-1", "DomainName": "api.example.com", "CustomOriginConfig": { "HTTPSPort": 443, "OriginProtocolPolicy": "https-only" }, "OriginMtlsConfig": { "ClientCertificateArn": "arn:aws:acm:us-east-1:123456789012:certificate/cert-1" } }, { "Id": "origin-2", "DomainName": "backend.example.com", "CustomOriginConfig": { "HTTPSPort": 443, "OriginProtocolPolicy": "https-only" }, "OriginMtlsConfig": { "CertificateArn": "arn:aws:acm:us-east-1:123456789012:certificate/cert-2" } } ] } }
注意
如果服务器不请求客户端证书,CloudFront 将不会提供该证书,从而支持正常进行连接。
后续步骤
在 CloudFront 分配上启用源 mTLS 后,可以使用 CloudFront 访问日志监控身份验证事件。