用于缓存策略并转发到源的查看器 mTLS 标头 - Amazon CloudFront
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

用于缓存策略并转发到源的查看器 mTLS 标头

使用双向 TLS 身份验证时,CloudFront 可以从客户端证书中提取信息,并将其作为 HTTP 标头转发到源。这可让原始服务器访问证书详细信息,而无需实施证书验证逻辑。

以下标头可用于创建缓存行为:

标头名称 说明 示例值
CloudFront-Viewer-Cert-Serial-Number 证书序列号的十六进制表示形式 4a:3f:5c:92:d1:e8:7b:6c
CloudFront-Viewer-Cert-Issuer 颁发者的可分辨名称(DN)的 RFC2253 字符串表示形式 CN=rootcamtls.com,OU=rootCA,O=mTLS,L=Seattle,ST=Washington,C=US
CloudFront-Viewer-Cert-Subject 主题的可分辨名称(DN)的 RFC2253 字符串表示形式 CN=client_.com,OU=client-3,O=mTLS,ST=Washington,C=US
CloudFront-Viewer-Cert-Present 1(提供)或 0(未提供),用于指示是否提供了证书。在“必需”模式下,此值始终为 1。 1
CloudFront-Viewer-Cert-Sha256 客户端证书的 SHA256 哈希 01fbf94fef5569753420c349f49adbfd80af5275377816e3ab1fb371b29cb586

对于源请求,除上述可供缓存行为使用的标头外,还会额外提供两个标头:

标头名称 说明 示例值
CloudFront-Viewer-Cert-Validity notBefore 和 notAfter 日期的 ISO8601 格式 CloudFront-Viewer-Cert-Validity:NotBefore=2023-09-21T01:50:17Z;NotAfter=2024-09-20T01:50:17Z
CloudFront-Viewer-Cert-Pem 叶证书的经 URL 编码的 PEM 格式 CloudFront-Viewer-Cert-Pem:-----BEGIN%20CERTIFICATE-----%0AMIIG<...reduced...>NmrUlw%0A-----END%20CERTIFICATE-----%0A

配置标头转发

控制台

在验证模式下,CloudFront 会自动将 CloudFront-Viewer-Cert-* 标头添加到所有查看器请求中。要将这些标头转发到源,请执行以下操作:

  1. 在主列表分配页面中,选择已启用查看器 mTLS 的分配,然后转至行为选项卡

  2. 选择缓存行为,然后选择编辑

  3. 源请求策略部分中,选择创建策略或选择现有策略

  4. 确保源请求策略包含以下标头:

    • CloudFront-Viewer-Cert-Serial-Number

    • CloudFront-Viewer-Cert-Issuer

    • CloudFront-Viewer-Cert-Subject

    • CloudFront-Viewer-Cert-Present

    • Cloudfront-Viewer-Cert-Sha256

    • CloudFront-Viewer-Cert-Validity

    • CloudFront-Viewer-Cert-Pem

  5. 选择创建(对于新策略)或保存更改(对于现有策略)

  6. 在缓存行为中选择策略并保存更改

使用 Amazon CLI

以下示例演示如何创建包含用于验证模式的 mTLS 标头的源请求策略:

aws cloudfront create-origin-request-policy \ --origin-request-policy-config '{ "Name": "MTLSHeadersPolicy", "HeadersConfig": { "HeaderBehavior": "whitelist", "Headers": { "Quantity": 5, "Items": [ "CloudFront-Viewer-Cert-Serial-Number", "CloudFront-Viewer-Cert-Issuer", "CloudFront-Viewer-Cert-Subject", "CloudFront-Viewer-Cert-Validity", "CloudFront-Viewer-Cert-Pem" ] } }, "CookiesConfig": { "CookieBehavior": "none" }, "QueryStringsConfig": { "QueryStringBehavior": "none" } }'

标头处理注意事项

使用证书标头时,请考虑以下最佳实践:

  • 标头验证:作为一项额外的安全措施,在源中验证证书标头值

  • 标头大小限制:PEM 证书标头可能较大,请确保您的原始服务器能够处理此类标头

  • 缓存注意事项:在缓存键中使用证书标头会加剧缓存碎片化

  • 跨源请求:如果您的应用程序使用 CORS,则可能需要将其配置为允许使用证书标头

后续步骤

配置标头转发后,您可以使用 CloudFront 连接函数和 KeyValueStore 实施证书吊销检查。有关实施吊销检查的详细信息,请参阅使用 CloudFront 连接函数和 KVS 实施吊销