亚马逊AWS官方博客

适用于应用程序负载均衡器的双向身份验证可以可靠地验证基于证书的客户端身份



今天,我们宣布支持向应用程序负载均衡器提供 X509 证书的双向认证客户端。借助这项新功能,您现在可以将客户端身份验证卸载到负载均衡器,确保只有可信的客户端与后端应用程序通信。这项新功能基于 S2N 构建,S2N 是 AWS 的开源传输层安全性协议(TLS)实现,可提供强大的加密和零日漏洞防护,值得开发人员信任。

双向认证(mTLS)通常用于企业对企业(B2B)应用程序,如网上银行、汽车或游戏设备,使用数字证书对设备进行认证。公司通常将其与 Private Certificate Authority(CA)一起使用,在授予对数据和服务的访问权限之前对客户端进行认证。

客户使用自行创建的或第三方的解决方案实现双向认证,这需要额外的时间和管理开销。这些客户投入工程资源在后端构建功能,更新代码以保持最新的安全补丁,并大力投资基础设施来创建和轮换证书。

通过应用程序负载均衡器上的双向认证,您将拥有一个完全托管、可扩展且经济高效的解决方案,使您能够利用开发人员资源专注于其他关键项目。ALB 将通过撤销检查对客户端进行认证,并将客户端证书信息传递给目标,这些信息可用于应用程序的授权。

开始使用 ALB 上的双向认证
要在 ALB 上启用双向认证,请在 Amazon EC2 控制台的 ALB 向导中选择创建应用程序负载均衡器。当您在侦听器和路由部分中选择 HTTPS 时,您可以看到更多设置,例如,安全策略、默认服务器证书以及支持双向认证的新客户端证书处理选项。

启用双向认证(mTLS)后,您可以配置侦听器处理提供客户端证书的请求的方式。这包括应用程序负载均衡器认证证书的方式,以及发送到后端目标的证书元数据数量。

双向认证有两个选项。Passthrough 选项使用 HTTP 标头将从客户端接收的所有客户端证书链发送到后端应用程序。启用了 mTLS 的应用程序负载均衡器在握手时获取客户端证书,建立 TLS 连接,然后将 HTTPS 标头中的所有内容发送到目标应用程序。应用程序需要验证客户端证书链,对客户端进行认证。

通过 Verify with trust store 选项,应用程序负载均衡器和客户端验证彼此的身份,并建立 TLS 连接对双方之间的通信进行加密。我们推出了新的信任库功能,您可以上传任何 CA 捆绑包,其中包含由 AWS Private Certificate Authority 或任何其他第三方 CA 生成的根证书和/或中间证书作为信任源,来验证您的客户端证书。

这需要选择一个现有的信任库或创建一个新的信任库。信任库包含您的 CA、可信证书以及可选的证书撤销列表(CRL)。负载均衡器使用信任库来执行与客户端的双向认证。

要使用此选项并创建新的信任库,请在 Amazon EC2 控制台的左侧菜单中选择信任库,然后选择创建信任库

您可以选择 PEM 格式的 CA 证书捆绑包,也可以从 Amazon Simple Storage Service(Amazon S3)存储桶中选择 CRL。CA 证书捆绑包是信任库使用的一组 CA 证书(根证书或中间证书)。当 CA 撤销已泄露的客户端证书,而您需要拒绝这些已撤销的证书时,可以使用 CRL。您可以替换 CA 捆绑包,并在创建后在信任库中添加或删除 CRL。

您可以将 AWS 命令行界面(AWS CLI)与新的 API(如 create-trust-store)一起使用,来上传 CA 信息,在应用程序负载均衡器侦听器上配置 mutual-authentication-mode,并将用户证书信息发送到目标。

$ aws elbv2 create-trust-store --name my-tls-name \
    --ca-certificates-bundle-s3-bucket channy-certs \
    --ca-certificates-bundle-s3-key Certificates.pem \
    --ca-certificates-bundle-s3-object-version <version>
>> arn:aws:elasticloadbalancing:root:file1
$ aws elbv2 create-listener --load balancer-arn <value> \
    --protocol HTTPS \
    --port 443 \
    --mutual-authentication Mode=verify,
      TrustStoreArn=<arn:aws:elasticloadbalancing:root:file1>

如果您已拥有自己的私有 CA,例如 AWS Private CA、第三方 CA 或自签名 CA,则可以将其 CA 捆绑包或 CRL 上传到应用程序负载均衡器信任库,以启用双向认证。

要测试应用程序负载均衡器上的双向认证,请按照分步说明使用 OpenSSL 创建自签名 CA 捆绑包和客户端证书,将其上传到 Amazon S3 存储桶,并与 ELB 信任库结合使用。

您可以将 curl--key--cert 参数一起使用,将客户端证书作为请求的一部分发送:

$ curl --key my_client.key --cert my_client.pem https://api.yourdomain.com

如果客户端提供的证书无效或过期、未能提供证书、找不到信任链、信任链中的任何链接已过期或证书在撤销列表中,则双向认证可能会失败。

只要应用程序负载均衡器无法对客户端进行认证,它就会关闭连接,并记录新的连接日志,以捕获有关发送到负载均衡器的请求的详细信息。每个日志都包含客户端 IP 地址、握手延迟、使用的 TLS 密码和客户端证书详细信息等信息。您可以使用这些连接日志来分析请求模式和解决问题。

要了解更多信息,请参阅 AWS 文档中的应用程序负载均衡器上的双向认证

现已推出
应用程序负载均衡器上的双向认证现已在提供应用程序负载均衡器的所有商业 AWS 区域推出(中国区域除外)。无需预付费用或任何承诺,您只需按实际使用量付费。要了解更多信息,请参阅 Elastic Load Balancing 定价页面。

不妨尝试一下,并将反馈发送到 AWS re:Post for Amazon EC2 或通过常用的 AWS Support 联系人发送。

了解详情:
应用程序负载均衡器产品页面

Channy