Elastic Load Balancing
Application Load Balancer
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

为您的应用程序负载均衡器创建 HTTPS 侦听器

侦听器是用于检查连接请求的进程。您可在创建负载均衡器时定义侦听器,并可随时向负载均衡器添加侦听器。

您可以创建使用加密连接的 HTTPS 侦听器(也称为 SSL 卸载)。此功能支持在您的负载均衡器与启动 SSL 或 TLS 会话的客户端之间进行流量加密。

此页面上的信息可帮助您为负载均衡器创建 HTTPS 侦听器。要向您的负载均衡器添加 HTTP 侦听器,请参阅为您的应用程序负载均衡器创建 HTTP 侦听器

SSL 证书

要使用 HTTPS 侦听器,您必须在负载均衡器上部署至少一个 SSL/TLS 服务器证书。负载均衡器先使用此证书终止连接,然后解密来自客户端的请求并将请求发送到目标。

负载均衡器需要 X.509 证书(SSL/TLS 服务器证书)。证书是由证书颁发机构 (CA) 颁发的数字化身份。证书包含标识信息、有效期限、公有密钥、序列号以及发布者的数字签名。

在创建用于负载均衡器的证书时,您必须指定域名。

我们建议您使用 AWS Certificate Manager (ACM) 为负载均衡器创建证书。ACM 已与 Elastic Load Balancing 集成,以便您可以在负载均衡器上部署证书。有关更多信息,请参阅 AWS Certificate Manager 用户指南

重要

ACM 支持具有 4096 密钥长度的 RSA 证书和 EC 证书。但是,您无法通过与 ACM 集成在负载均衡器上安装这些证书。您必须将这些证书上传到 IAM,以便将它们与负载均衡器结合使用。

此外,还可以使用 SSL/TLS 工具创建证书签名请求 (CSR),然后获取由 CA 签署的 CSR 以生成证书,并将证书导入 ACM,或将证书上传至 AWS Identity and Access Management (IAM)。有关将证书导入 ACM 的更多信息,请参阅 AWS Certificate Manager 用户指南 中的导入证书。有关将证书上传到 IAM 的更多信息,请参阅 IAM 用户指南 中的使用服务器证书

默认证书

创建 HTTPS 侦听器时,必须仅指定一个证书。此证书称为默认证书

如果在证书列表中指定其他证书,则仅当客户端在不使用服务器名称指示 (SNI) 协议的情况下连接以指定主机名或证书列表中没有匹配的证书时,才使用默认证书。

如果您未指定其他证书但需要通过单一负载平衡器托管多个安全应用程序,则可以使用通配符证书或为证书的每个其他域添加使用者备用名称 (SAN)。

证书列表

创建 HTTPS 侦听器后,它具有默认证书和空证书列表。您可以选择将证书添加到侦听器的证书列表中。使用证书列表可使负载均衡器在同一端口上支持多个域,并为每个域提供不同的证书。

负载均衡器使用支持 SNI 的智能证书选择算法。如果客户端提供的主机名与证书列表中的一个证书匹配,则负载均衡器将选择此证书。如果客户端提供的主机名与证书列表中的多个证书匹配,则负载均衡器将选择客户端可支持的最佳证书。根据以下标准,按下面的顺序选择证书:

  • 公有密钥算法 (ECDSA 优先于 RSA)

  • 哈希算法 (SHA 优先于 MD5)

  • 密钥长度 (首选最大值)

  • 有效期

负载均衡器访问日志条目指示客户端指定的主机名和向客户端提供的证书。有关更多信息,请参阅 访问日志条目

证书续订

每个证书都有有效期限。您必须确保在有效期结束之前续订或替换负载均衡器的每个证书。这包括默认证书和证书列表中的证书。续订或替换证书不影响负载均衡器节点已收到的进行中的请求,并暂停指向正常运行的目标的路由。续订证书之后,新的请求将使用续订后的证书。更换证书之后,新的请求将使用新证书。

您可以按如下方式管理证书续订和替换:

  • 由 AWS Certificate Manager 提供、部署在负载均衡器上的证书可以自动续订。ACM 将尝试在到期之前续订证书。有关更多信息,请参阅 AWS Certificate Manager 用户指南 中的托管续订

  • 如果您将证书导入 ACM,则必须监视证书的到期日期并在到期前续订。有关更多信息,请参阅 AWS Certificate Manager 用户指南 中的导入证书

  • 如果您已将证书导入 IAM 中,则必须创建一个新证书,将该新证书导入 ACM 或 IAM 中,将该新证书添加到负载均衡器,并从负载均衡器删除过期的证书。

安全策略

Elastic Load Balancing 使用安全套接字层 (SSL) 协商配置 (称为安全策略) 在客户端与负载均衡器之间协商 SSL 连接。安全策略是协议和密码的组合。协议在客户端与服务器之间建立安全连接,确保在客户端与负载均衡器之间传递的所有数据都是私密数据。密码是使用加密密钥创建编码消息的加密算法。协议使用多种密码对 Internet 上的数据进行加密。在连接协商过程中,客户端和负载均衡器会按首选项顺序提供各自支持的密码和协议的列表。默认情况下,会为安全连接选择服务器列表中与任何一个客户端的密码匹配的第一个密码。

对于客户端连接或目标连接,Application Load Balancer 不支持 SSL 重新协商。

您可以选择用于前端连接的安全策略。ELBSecurityPolicy-2016-08 安全策略始终用于后端连接。Application Load Balancer 不支持自定义安全策略。

Elastic Load Balancing 为 Application Load Balancer 提供以下安全策略:

  • ELBSecurityPolicy-2016-08

  • ELBSecurityPolicy-FS-2018-06

  • ELBSecurityPolicy-TLS-1-2-2017-01

  • ELBSecurityPolicy-TLS-1-2-Ext-2018-06

  • ELBSecurityPolicy-TLS-1-1-2017-01

  • ELBSecurityPolicy-2015-05

  • ELBSecurityPolicy-TLS-1-0-2015-04

建议将 ELBSecurityPolicy-2016-08 策略用于一般用途。如果需要向前保密 (FS),可使用 ELBSecurityPolicy-FS-2018-06 策略。您可以使用 ELBSecurityPolicy-TLS 策略之一,以满足需要禁用特定 TLS 协议版本的合规性和安全标准,或者支持需要已弃用密码的旧客户端。只有一小部分 Internet 客户端需要 TLS 版本 1.0。要查看针对负载均衡器的请求的 TLS 协议版本,请为负载均衡器启用访问日志记录并查看访问日志。有关更多信息,请参阅访问日志

下表描述了为 Application Load Balancer 定义的安全策略。

安全策略 2016-08 * FS-2018-06 TLS-1-2 TLS-1-2-Ext TLS-1-1 TLS-1-0 †
TLS 协议

Protocol-TLSv1

Protocol-TLSv1.1

Protocol-TLSv1.2

TLS 密码

ECDHE-ECDSA-AES128- GCM-SHA256

ECDHE-RSA-AES128- GCM-SHA256

ECDHE-ECDSA-AES128-SHA256

ECDHE-RSA-AES128-SHA256

ECDHE-ECDSA-AES128-SHA

ECDHE-RSA-AES128-SHA

ECDHE-ECDSA-AES256- GCM-SHA384

ECDHE-RSA-AES256- GCM-SHA384

ECDHE-ECDSA-AES256-SHA384

ECDHE-RSA-AES256-SHA384

ECDHE-RSA-AES256-SHA

ECDHE-ECDSA-AES256-SHA

AES128-GCM-SHA256

AES128-SHA256

AES128-SHA

AES256-GCM-SHA384

AES256-SHA256

AES256-SHA

DES-CBC3-SHA

* Application Load Balancer 的 ELBSecurityPolicy-2016-08ELBSecurityPolicy-2015-05 安全策略是相同的。

† 除非您必须支持需要 DES-CBC3-SHA 密码(这是一种弱密码)的旧客户端,否则请勿使用此安全策略。

要使用 AWS CLI 查看 Application Load Balancer 安全策略的配置,请使用 describe-ssl-policies 命令。

添加 HTTPS 侦听器

您为侦听器配置用于从客户端连接到负载均衡器的协议和端口,并为默认侦听器规则配置目标组。有关更多信息,请参阅 侦听器配置

先决条件

  • 要将转发操作添加到默认侦听器规则,您必须指定可用的目标组。有关更多信息,请参阅 创建目标组

  • 要创建 HTTPS 侦听器,您必须指定证书和安全策略。负载均衡器先使用证书终止连接,然后解密来自客户端的请求,最后再将请求路由到目标。负载均衡器在协商与客户端的 SSL 连接时会使用安全策略。

使用控制台添加 HTTPS 侦听器

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格上的 LOAD BALANCING 下,选择 Load Balancers

  3. 选择负载均衡器,然后依次选择 Listeners (侦听器)Add listener (添加侦听器)

  4. 对于 Protocol : port (协议: 端口),选择 HTTPS 并保留默认端口或指定其他端口。

  5. (可选)要验证用户的身份,对于 Default actions (默认操作),选择 Add action (添加操作)Authenticate (身份验证) 并提供请求的信息。要保存操作,请选择选中标记图标。有关更多信息,请参阅 使用应用程序负载均衡器验证用户身份

  6. 对于 Default actions (默认操作),请执行下列操作之一:

    • 选择 Add action (添加操作)Forward to (转发至) 并选择目标组。

    • 选择 Add action (添加操作)Redirect to (重定向至) 并为重定向提供 URL。有关更多信息,请参阅重定向操作

    • 选择 Add action (添加操作)Return fixed response (返回固定响应),然后提供响应代码和可选的响应正文。有关更多信息,请参阅 固定响应操作

    要保存操作,请选择选中标记图标。

  7. 对于 Security policy (安全策略),我们建议保留默认安全策略。

  8. 对于 Default SSL certificate (默认 SSL 证书),请执行下列操作之一:

    • 如果使用 AWS Certificate Manager 创建或导入了证书,请选择 From ACM (来自 ACM) 并选择证书。

    • 如果使用 IAM 上传了证书,则选择 From IAM (来自 IAM) 并选择证书。

  9. 选择 Save

  10. (可选) 要定义基于路径模式或主机名转发请求的其他侦听器规则,请参阅添加规则

  11. (可选)要添加用于 SNI 协议的证书列表,请参阅将证书添加到证书列表

使用 AWS CLI 添加 HTTPS 侦听器

使用 create-listener 命令可创建侦听器和默认规则,使用 create-rule 命令可定义更多侦听器规则。

更新 HTTPS 侦听器

创建 HTTPS 侦听器后,您可以替换默认证书、更新证书列表或替换安全策略。有关更多信息,请参阅 为您的应用程序负载均衡器更新 HTTPS 侦听器