在 Application Load Balancer 中使用 TLS 进行 - Elastic Load Balancing
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Application Load Balancer 中使用 TLS 进行

双向 TLS 身份验证是传输层安全 (TLS) 的一种变体。传统的 TLS 在服务器和客户端之间建立安全的通信,服务器需要向其客户端提供其身份。使用双向 TLS,负载均衡器在协商 TLS 时协商客户端和服务器之间的相互身份验证。当您将双向 TLS 与 Application Load Balancer 配合使用时,可以简化身份验证管理并减少应用程序的负载。

通过将双向 TLS 与 Application Load Balancer 配合使用,您的负载均衡器可以管理客户端身份验证,从而帮助确保只有受信任的客户端才能与您的后端应用程序通信。使用此功能时,Application Load Balancer 会使用来自第三方证书颁发机构 (CA) 的证书或使用 Amazon Private Certificate Authority (PCA)(可选)对客户端进行身份验证,也可以使用吊销检查。Application Load Balancer 将客户端证书信息传递到后端,您的应用程序可以使用这些信息进行授权。通过在 Application Load Balancer 中使用双向 TLS,您可以使用已建立的库,为基于证书的实体获得内置、可扩展的托管身份验证。

应用程序负载均衡器的双向 TLS 提供了以下两个用于验证 X.509v3 客户端证书的选项:

注意:不支持 X.509v1 客户端证书。

  • 双向 TLS 直通:当您使用双向 TLS 直通模式时,Application Load Balancer 会使用 HTTP 标头将整个客户端证书链发送到目标。然后,通过使用客户端证书链,您可以在应用程序中实现相应的身份验证和授权逻辑。

  • 双向 TLS 验证:当您使用双向 TLS 验证模式时,当负载均衡器协商 TLS 连接时,Application Load Balancer 会为客户端执行 X.509 客户端证书身份验证。

要开始使用直通方式在 Application Load Balancer 中使用双向 TLS,您只需要将侦听器配置为接受来自客户端的任何证书即可。要使用双向 TLS 进行验证,必须执行以下操作:

  • 创建新的信任存储资源。

  • 上传您的证书颁发机构 (CA) 捆绑包和(可选)吊销列表。

  • 将信任存储区附加到配置为验证客户端证书的侦听器。

有关使用您的 Application Load Balancer 配置双向 TLS 验证模式的 step-by-step 过程,请参阅在 Application 负载均衡器上配置双向 TLS

开始在 Application Load Balancer 上配置双向 TLS 之前

在开始在 Application Load Balancer 上配置双向 TLS 之前,请注意以下几点:

配额

应用程序负载均衡器包括与您的 Amazon 账户中使用的信任存储库、CA 证书和证书吊销列表数量相关的某些限制。

有关更多信息,请参阅应用程序负载均衡器的配额

证书要求

对于用于双向 TLS 身份验证的证书,应用程序负载均衡器支持以下内容:

  • 支持的证书:x.509v3

  • 支持的公钥:RSA 2K — 8K 或 ECDSA secp256r1、secp384r1、secp521r1

  • 支持的签名算法:带有 RSA/SHA256 的 SHA256、384、512、带有 EC/SHA256,384,512 哈希的 384、512 带有 MGF1 的 RSSASSA-PSS

CA 证书

以下内容适用于证书颁发机构 (CA) 捆绑包:

  • 应用程序负载均衡器批量上传每个证书颁发机构 (CA) 证书包。应用程序负载均衡器不支持上传单个证书。如果您需要添加新证书,则必须上传证书捆绑包文件。

  • 要替换 CA 证书包,请使用 ModifyTrustStoreAPI。

直通证书订单

当您使用双向 TLS 直通时,Application Load Balancer 会插入标头,将客户端的证书链呈现给后端目标。演示顺序从叶证书开始,最后是根证书。

会话恢复

在 Application Load Balancer 中使用双向 TLS 直通或验证模式时,不支持会话恢复。

HTTP 标头

应用程序负载均衡器在使用双向 TLS 协商客户端连接时使用X-Amzn-Mtls标头发送证书信息。有关更多信息和标题示例,请参阅HTTP 标头和双向 TLS

HTTP 标头和双向 TLS

本节介绍应用程序负载均衡器在使用双向 TLS 与客户端协商连接时用来发送证书信息的 HTTP 标头。Application Load Balancer 使用的特定X-Amzn-Mtls标头取决于您指定的双向 TLS 模式:直通模式或验证模式。

有关应用程序负载均衡器支持的其他 HTTP 标头的信息,请参阅HTTP 标头和 Application Load Balancer

直通模式的 HTTP 标头

对于直通模式下的双向 TLS,应用程序负载均衡器使用以下标头。

此标头包含连接中显示的整个客户端证书链的 URL 编码 PEM 格式,并带有+=/安全字符。

标题内容示例:

X-Amzn-Mtls-Clientcert: -----BEGIN%20CERTIFICATE-----%0AMIID<...reduced...>do0g%3D%3D%0A-----END%20CERTIFICATE-----%0A-----BEGIN%20CERTIFICATE-----%0AMIID1<...reduced...>3eZlyKA%3D%3D%0A-----END%20CERTIFICATE-----%0A

验证模式的 HTTP 标头

对于验证模式下的双向 TLS,应用程序负载均衡器使用以下标头。

此标头包含叶证书序列号的十六进制表示形式。

标题内容示例:

X-Amzn-Mtls-Clientcert-Serial-Number: 03A5B1

此标头包含颁发者可分辨名称 (DN) 的 RFC2253 字符串表示形式。

标题内容示例:

X-Amzn-Mtls-Clientcert-Issuer: CN=rootcamtls.com,OU=rootCA,O=mTLS,L=Seattle,ST=Washington,C=US

此标头包含主题可分辨名称 (DN) 的 RFC2253 字符串表示形式。

标题内容示例:

X-Amzn-Mtls-Clientcert-Subject: CN=client_.com,OU=client-3,O=mTLS,ST=Washington,C=US

此标头包含 ISO8601 格式的notBeforenotAfter日期。

标题内容示例:

X-Amzn-Mtls-Clientcert-Validity: NotBefore=2023-09-21T01:50:17Z;NotAfter=2024-09-20T01:50:17Z

此标头包含叶证书的 URL 编码 PEM 格式,并带有+=/安全字符。

标题内容示例:

X-Amzn-Mtls-Clientcert-Leaf: -----BEGIN%20CERTIFICATE-----%0AMIIG<...reduced...>NmrUlw%0A-----END%20CERTIFICATE-----%0A

在 Application 负载均衡器上配置双向 TLS

本节包括在应用程序负载均衡器上配置双向 TLS 验证模式以进行身份验证的过程。

要使用双向 TLS 直通模式,您只需将侦听器配置为接受来自客户端的任何证书即可。当您使用双向 TLS 直通时,Application Load Balancer 使用 HTTP 标头将整个客户端证书链发送到目标,这使您能够在应用程序中实现相应的身份验证和授权逻辑。有关更多信息,请参阅为您的应用程序负载均衡器创建 HTTPS 侦听器

当您在验证模式下使用双向 TLS 时,当负载均衡器协商 TLS 连接时,Application Load Balancer 会为客户端执行 X.509 客户端证书身份验证。

要使用双向 TLS 验证模式,请执行以下操作:

  • 创建新的信任存储资源。

  • 上传您的证书颁发机构 (CA) 捆绑包和(可选)吊销列表。

  • 将信任存储区附加到配置为验证客户端证书的侦听器。

按照本节中的步骤在中的 Application Load Balancer 上配置双向 TLS 验证模式 Amazon Web Services Management Console。要使用 API 操作而不是控制台配置双向 TLS,请参阅 App lication Load Balancer API 参考指南

创建信任存储库

您可以通过三种方式创建信任存储:创建 Application Load Balancer 时、创建安全侦听器时,以及使用 Trust Store 控制台时。当您在创建负载均衡器或侦听器时添加信任存储时,该信任存储库会自动与新的侦听器关联。使用 Trust Store 控制台创建信任存储库时,必须自己将其与监听器相关联。

本节介绍如何使用 Trust Store 控制台创建信任存储,但是创建 Application Load Balancer 或侦听器时使用的步骤相同。有关更多信息,请参阅配置负载均衡器和侦听器和添加 HTTPS 侦听器

先决条件:
  • 要创建信任存储库,您必须拥有证书颁发机构 (CA) 的证书包。

使用控制台创建信任存储库
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格上,选择 Trust Stores

  3. 选择创建信任存储

  4. 信任存储配置

    1. 在 T rust 商店名称中,输入您的信任商店的名称。

    2. 对于证书颁发机构捆绑包,输入您希望信任存储库使用的 CA 证书捆绑包的 Amazon S3 路径。

      可选:使用对象版本选择 ca 证书捆绑包的先前版本。否则,将使用当前版本。

  5. 对于撤销,您可以选择将证书吊销列表添加到您的信任存储中。

    1. 证书吊销列表下,输入您希望信任存储库使用的证书吊销列表的 Amazon S3 路径。

      可选:使用对象版本选择证书吊销列表的先前版本。否则,将使用当前版本。

  6. 对于信任存储标签,您可以选择输入最多 50 个标签以应用于您的信任存储。

  7. 选择创建信任存储

关联信任存储库

创建信任存储后,必须将其与侦听器关联,然后您的 Application Load Balancer 才能开始使用信任存储。您只能将一个信任存储库与每个安全侦听器相关联,但一个信任存储库可以与多个监听器相关联。

本节介绍如何将信任存储库与现有侦听器相关联。或者,您可以在创建 Application Load Balancer 或侦听器时关联信任存储。有关更多信息,请参阅配置负载均衡器和侦听器和添加 HTTPS 侦听器

使用控制台关联信任存储库
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择负载均衡器

  3. 选择负载均衡器以查看其详细信息页面。

  4. 在 “监听器和规则” 选项卡上,选择 “协议:端口” 列中的链接以打开安全侦听器的详细信息页面。

  5. 在 “安全” 选项卡上,选择 “编辑安全侦听器设置”

  6. (可选)如果未启用双向 TLS,请在 “客户端证书处理” 下选择 “相互身份验证 (mTLS)”,然后选择 “使用信任库验证”。

  7. 在 “信任存储” 下,选择您创建的信任存储。

  8. 选择保存更改

查看信任存储详情

CA 证书捆绑包

CA 证书捆绑包是信任存储库的必需组件。它是一组经过证书颁发机构验证的可信根证书和中间证书。这些经过验证的证书可确保客户端可以信任所提供的证书归负载均衡器所有。

您可以随时在信任存储区中查看当前 CA 证书包的内容。

查看 CA 证书包
使用控制台查看 CA 证书包
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格上,选择 Trust Stores

  3. 选择信任存储库以查看详细信息页面。

  4. 选择操作,然后选择获取 CA 捆绑包

  5. 选择 “共享链接” 或 “下载”。

证书吊销清单

或者,您可以为信任存储库创建证书吊销列表。吊销列表由证书颁发机构发布,其中包含已被吊销的证书的数据。

将证书吊销列表添加到信任存储库时,会为其提供一个吊销 ID。每添加到信任存储库的撤销列表,撤销 ID 都会增加,并且无法更改。如果证书吊销列表从信任存储库中删除,则其吊销 ID 也会被删除,并且在信任存储的生命周期内不会重复使用。

查看证书吊销列表
使用控制台查看吊销列表
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格上,选择 Trust Stores

  3. 选择信任存储库以查看详细信息页面。

  4. 证书吊销列表选项卡上,选择操作,然后选择获取吊销列表。

  5. 选择 “共享链接” 或 “下载”。

修改信任存储库

一个信任存储一次只能包含一个 CA 证书包,但是在信任存储库创建后,您可以随时替换 CA 证书包。

更换 CA 证书包

使用控制台替换 CA 证书包
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格上,选择 Trust Stores

  3. 选择信任存储库以查看详细信息页面。

  4. 选择操作,然后选择替换 CA 分发包

  5. 替换 CA 捆绑包页面的证书颁发机构捆绑包下,输入所需的 CA 捆绑包的 Amazon S3 位置。

  6. (可选)使用对象版本选择证书吊销列表的先前版本。否则,将使用当前版本。

  7. 选择 “替换 CA 捆绑包”。

添加证书吊销列表

使用控制台添加吊销列表
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格上,选择 Trust Stores

  3. 选择信任存储库以查看其详细信息页面。

  4. 证书吊销列表选项卡上,选择操作,然后选择添加吊销列表。

  5. 添加吊销列表页面的证书吊销列表下,输入所需证书吊销列表的 Amazon S3 位置

  6. (可选)使用对象版本选择证书吊销列表的先前版本。否则,将使用当前版本。

  7. 选择 “添加吊销列表

删除证书吊销列表

使用控制台删除吊销列表
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格上,选择 Trust Stores

  3. 选择信任存储库以查看详细信息页面。

  4. 证书吊销列表选项卡上,选择操作,然后选择删除吊销列表。

  5. 键入确认删除confirm

  6. 选择删除

删除信任存储库

当您不再使用信任存储时,可以将其删除。

注意:您无法删除当前与监听器关联的信任存储库。

使用控制台删除信任存储库
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格上,选择 Trust Stores

  3. 选择信任存储库以查看其详细信息页面。

  4. 选择操作,然后选择删除信任存储

  5. 键入确认删除confirm

  6. 选择删除

应用程序负载均衡器的连接日志

Elastic Load Balancing 提供连接日志,用于捕获有关发送到应用程序负载均衡器的请求的属性。连接日志包含客户端 IP 地址和端口、客户端证书信息、连接结果以及正在使用的 TLS 密码等信息。然后,可以使用这些连接日志来查看请求模式和其他趋势。

要了解有关连接日志的更多信息,请参阅 Application Load Balancer 的连接日志