在应用程序负载均衡器上配置双向 TLS - Elastic Load Balancing

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

在应用程序负载均衡器上配置双向 TLS

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

当您在验证模式下使用相互 TLS 时,应用程序负载均衡器会在负载均衡器协商 TLS 连接时为客户端执行 X.509 客户端证书身份验证。

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

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

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

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

使用以下过程在 Application Load Balancer 上配置双向 TLS 验证模式。

创建信任存储

如果您在创建负载均衡器或侦听器时添加了信任存储,则该信任存储库将自动与新的侦听器关联。否则,您必须自己将其与听众关联。

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

Console

以下示例使用控制台的 Trust Store 部分创建信任存储。或者,您可以在创建 HTTP 侦听器时创建信任存储库。

创建信任存储
  1. 打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/

  2. 在导航窗格上,选择信任存储

  3. 选择 “创建信任存储”。

  4. 信任存储配置

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

    2. 对于证书颁发机构捆绑包,请输入要使用的 CA 证书捆绑包的 Amazon S3 路径。

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

  5. (可选)对于撤销,您可以向信任存储区添加证书吊销列表。

    1. 选择 “添加新 CRL”,然后在 Amazon S3 中输入证书吊销列表的位置。

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

  6. (可选)展开 T rust 存储标签,为您的信任存储最多输入 50 个标签。

  7. 选择 “创建信任存储”。

AWS CLI
创建信任存储

使用 create-trust-store 命令。

aws elbv2 create-trust-store \ --name my-trust-store \ --ca-certificates-bundle-s3-bucket amzn-s3-demo-bucket \ --ca-certificates-bundle-s3-key certificates/ca-bundle.pem
CloudFormation
创建信任存储

定义类型为的资源AWS::ElasticLoadBalancingV2::TrustStore

Resources: myTrustStore: Type: 'AWS::ElasticLoadBalancingV2::TrustStore' Properties: Name: my-trust-store CaCertificatesBundleS3Bucket: amzn-s3-demo-bucket CaCertificatesBundleS3Key: certificates/ca-bundle.pem

关联信任存储

创建信任存储后,您必须将其与侦听器关联,然后应用程序负载均衡器才能开始使用信任存储。每个安全侦听器只能关联一个信任存储,但一个信任存储可以关联到多个侦听器。

Console

您可以将信任存储库与现有侦听器关联,如以下过程所示。或者,您可以在创建 HTTPS 侦听器时关联信任存储。有关更多信息,请参阅创建 HTTPS 监听器

关联信任存储库
  1. 打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/

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

  3. 选择负载均衡器。

  4. 侦听器和规则选项卡上,选择 Protocol:Port 列中的链接以打开安全侦听器的详细信息页面。

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

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

  7. 对于信任存储,请选择信任存储。

  8. 选择保存更改

AWS CLI
关联信任存储库

使用 modify-listener 命令。

aws elbv2 modify-listener \ --listener-arn listener-arn \ --mutual-authentication "Mode=verify,TrustStoreArn=trust-store-arn"
CloudFormation
关联信任存储库

更新AWS::ElasticLoadBalancingV2::Listener资源。

Resources: myHTTPSListener: Type: 'AWS::ElasticLoadBalancingV2::Listener' Properties: LoadBalancerArn: !Ref myLoadBalancer Protocol: HTTPS Port: 443 DefaultActions: - Type: "forward" TargetGroupArn: !Ref myTargetGroup SslPolicy: ELBSecurityPolicy-TLS13-1-2-2021-06 Certificates: - CertificateArn: certificate-arn MutualAuthentication: - Mode: verify TrustStoreArn: trust-store-arn

替换 CA 证书捆绑包

CA 证书捆绑包是信任存储的一个必需组件。它是经过证书颁发机构验证的受信任的根证书和中间证书的集合。这些经过验证的证书确保客户端可以信任所呈现的证书由负载均衡器拥有。

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

Console
替换 CA 证书包
  1. 打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/

  2. 在导航窗格上,选择信任存储

  3. 选择信任存储库。

  4. 选择操作替换 CA 捆绑包

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

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

  7. 选择替换 CA 捆绑包

AWS CLI
替换 CA 证书包

使用 modify-trust-store 命令。

aws elbv2 modify-trust-store \ --trust-store-arn trust-store-arn \ --ca-certificates-bundle-s3-bucket amzn-s3-demo-bucket-new \ --ca-certificates-bundle-s3-key certificates/new-ca-bundle-pem
CloudFormation
更新 CA 证书包

定义类型为的资源AWS::ElasticLoadBalancingV2::TrustStore

Resources: myTrustStore: Type: 'AWS::ElasticLoadBalancingV2::TrustStore' Properties: Name: my-trust-store CaCertificatesBundleS3Bucket: amzn-s3-demo-bucket-new CaCertificatesBundleS3Key: certificates/new-ca-bundle.pem

添加证书吊销列表

或者,您可以为信任存储创建证书吊销列表。吊销列表由证书颁发机构发布,包含已吊销证书的数据。应用程序负载均衡器仅支持 PEM 格式的证书吊销列表。

当将证书吊销列表添加到信任存储时,系统会为其提供吊销 ID。每个添加到信任存储库的吊销列表都会 IDs 增加,并且无法更改。

应用程序负载均衡器无法吊销证书吊销列表中序列号为负的证书。

Console
添加吊销列表
  1. 打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/

  2. 在导航窗格上,选择信任存储

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

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

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

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

  7. 选择添加吊销列表

AWS CLI
添加吊销列表

使用 add-trust-store-revocations 命令。

aws elbv2 add-trust-store-revocations \ --trust-store-arn trust-store-arn \ --revocation-contents "S3Bucket=amzn-s3-demo-bucket,S3Key=crl/revoked-list.crl,RevocationType=CRL"
CloudFormation
添加吊销列表

定义类型为 “AWS::ElasticLoadBalancingV2::TrustStore撤销” 的资源。

Resources: myRevocationContents: Type: 'AWS:ElasticLoadBalancingV2::TrustStoreRevocation' Properties: TrustStoreArn: !Ref myTrustStore RevocationContents: - RevocationType: CRL S3Bucket: amzn-s3-demo-bucket S3Key: crl/revoked-list.crl

删除证书吊销列表

当您不再需要证书吊销列表时,可以将其删除。当您从信任存储库中删除证书吊销列表时,该列表的吊销 ID 也会被删除,并且在信任存储的生命周期内不会重复使用。

Console
删除吊销列表
  1. 打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/

  2. 在导航窗格上,选择信任存储

  3. 选择信任存储库。

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

  5. 当系统提示进行确认时,输入 confirm

  6. 选择删除

AWS CLI
删除吊销列表

使用 remove-trust-store-revocations 命令。

aws elbv2 remove-trust-store-revocations \ --trust-store-arn trust-store-arn \ --revocation-ids id-1 id-2 id-3

删除信任存储

当您不再使用某个信任存储时,可以将其删除。您无法删除与监听器关联的信任存储库。

Console
删除信任存储库
  1. 打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/

  2. 在导航窗格上,选择信任存储

  3. 选择信任存储库。

  4. 选择删除

  5. 提示进行确认时,输入 confirm,然后选择 Delete(删除)。

AWS CLI
删除信任存储库

使用 delete-trust-store 命令。

aws elbv2 delete-trust-store \ --trust-store-arn trust-store-arn