

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

# 经典负载均衡器的 HTTPS 侦听器
<a name="elb-https-load-balancers"></a>

您可以创建使用 SSL/TLS 协议进行加密连接（也称为 *SSL 卸载）的负载*均衡器。利用此功能，可对您的负载均衡器与启动 HTTPS 会话的客户端之间的流量进行加密，也可对负载均衡器与 EC2 实例之间的连接加密。

Elastic Load Balancing 使用安全套接字层 (SSL) 协商配置（称为*安全策略*），以便在客户端与负载均衡器之间协商连接。当您使用 HTTPS/SSL 前端连接时，可以使用预定义的安全策略或自定义的安全策略。您必须在负载均衡器上部署 SSL 证书。负载均衡器先使用此证书终止连接，解密来自客户端的请求，然后再将请求发送到实例。负载均衡器使用静态密码套件建立后端连接。您可选择性地在您的实例上启用身份验证。

经典负载均衡器不支持服务器名称指示（SNI）。您可以改为使用以下备选项之一：
+ 在负载均衡器上部署一个证书，并为每个其他网站添加一个主题备用名称 (SAN)。 SANs 使您能够使用单个证书保护多个主机名。有关每个证书支持的数量以及如何添加和删除的更多信息 SANs ，请咨询您的证书提供商 SANs。
+ 对于前端和后端连接，在端口 443 上使用 TCP 侦听器。负载均衡器按原样传递请求，因此您可以处理 EC2 实例上的 HTTPS 终止。

经典负载均衡器不支持双向 TLS 身份验证（mTLS）。要获得 mTLS 支持，请创建一个 TCP 侦听器。负载均衡器按原样传输请求，因此您可以在 EC2 实例上实施 mTLS。

**Topics**
+ [SSL/TLS 证书](ssl-server-cert.md)
+ [SSL 协商配置](elb-ssl-security-policy.md)
+ [预定义 SSL 安全策略](elb-security-policy-table.md)
+ [创建 HTTPS 负载均衡器](elb-create-https-ssl-load-balancer.md)
+ [配置 HTTPS 侦听器](elb-add-or-delete-listeners.md)
+ [替换 SSL 证书](elb-update-ssl-cert.md)
+ [更新 SSL 协商配置](ssl-config-update.md)

# 经典负载均衡器的 SSL/TLS 证书
<a name="ssl-server-cert"></a>

如果前端侦听器使用 HTTPS (SSL 或 TLS)，则必须在负载均衡器上部署 SSL/TLS 证书。负载均衡器先使用此证书终止连接，解密来自客户端的请求，然后再将请求发送到实例。

SSL 和 TLS 协议使用 X.509 证书 (SSL/TLS 服务器证书) 对客户端和后端应用程序进行身份验证。X.509 证书是证书颁发机构 (CA) 颁发的数字形式的标识，包含标识信息、有效期限、公钥、序列号以及颁发者的数字签名。

您可以使用 AWS Certificate Manager 或支持 SSL 和 TLS 协议的工具（例如 OpenSSL）来创建证书。在创建或更新负载均衡器的 HTTPS 侦听器时，您需要指定该证书。在创建用于负载均衡器的证书时，您必须指定域名。

在创建用于负载均衡器的证书时，您必须指定域名。证书上的域名必须与自定义域名记录匹配。如果不匹配，则不会对流量进行加密，因为无法验证 TLS 连接。

必须为证书指定一个完全限定域名 (FQDN)（例如 `www.example.com`）或顶点域名（例如 `example.com`）。您还可以使用星号 (\$1) 作为通配符来保护同一域中的多个站点名称。请求通配符证书时，星号 (\$1) 必须位于域名的最左侧位置，而且只能保护一个子域级别。例如，`*.example.com` 保护 `corp.example.com` 和 `images.example.com`，但无法保护 `test.login.example.com`。另请注意，`*.example.com` 仅保护 `example.com` 的子域，而不保护裸域或顶点域 (`example.com`)。通配符名称将显示在证书的 **Subject（主题）**字段和 **Subject Alternative Name（主题替代名称）**扩展中。有关公共证书的更多信息，请参阅 *AWS Certificate Manager 用户指南*中的[请求公共证书](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html#request-public-console)。

## 使用创建或导入 SSL/TLS 证书 AWS Certificate Manager
<a name="create-certificate-acm"></a>

我们建议您使用 AWS Certificate Manager (ACM) 为负载均衡器创建或导入证书。ACM 与 Elastic Load Balancing 集成，以便您可以在负载均衡器上部署证书。要在负载均衡器上部署证书，证书与负载均衡器必须在同一区域中。有关更多信息，请参阅 *AWS Certificate Manager 用户用户指南*中的[请求公有证书](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html)或[导入证书](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html)。

要允许用户使用 AWS 管理控制台在您的负载均衡器上部署证书，您必须向其授予对 ACM `ListCertificates` API 操作的访问权限。有关更多信息，请参阅 *AWS Certificate Manager 用户指南*中的[列出证书](https://docs.aws.amazon.com/acm/latest/userguide/security_iam_id-based-policy-examples.html#policy-list-certificates)。

**重要**  
您无法通过与 ACM 集成在负载均衡器上安装带有 4096 位 RSA 密钥或 EC 密钥的证书。您必须将带有 4096 位 RSA 密钥或 EC 密钥的证书上传到 IAM，以便将它们与负载均衡器结合使用。

## 使用 IAM 导入 SSL/TLS 证书
<a name="import-certificate-iam"></a>

如果您不使用 ACM，则可以使用 OpenSSL 等 SSL/TLS 工具创建证书签名请求 (CSR)，获取 CA 签署的 CSR 以生成证书，然后将证书上传到 IAM。有关更多信息，请参阅 *IAM 用户指南*中的[使用服务器证书](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html)。

# 经典负载均衡器的 SSL 协商配置
<a name="elb-ssl-security-policy"></a>

Elastic Load Balancing 使用一个安全套接字层 (SSL) 协商配置（称为*安全策略*）在客户端与负载均衡器之间协商 SSL 连接。安全策略是 SSL 协议、SSL 密码和服务器顺序首选项选项的组合。有关为负载均衡器配置 SSL 连接的更多信息，请参阅[经典负载均衡器的侦听器](elb-listener-config.md)。

**Topics**
+ [

## 安全策略
](#security-policy-types)
+ [

## SSL 协议
](#ssl-protocols)
+ [

## 服务器顺序首选项
](#server-order-preference)
+ [

## SSL 密码
](#ssl-ciphers)
+ [

## 用于后端连接的密码套件
](#elb-backend-cipher-suite)

## 安全策略
<a name="security-policy-types"></a>

安全策略确定在客户端与负载均衡器之间进行 SSL 协商期间受支持的密码和协议。您可以配置自己的经典负载均衡器以使用预定义或自定义的安全策略。

请注意，由 AWS Certificate Manager (ACM) 提供的证书包含 RSA 公钥。因此，如果您使用 ACM 提供的证书，则安全策略必须包括一个使用 RSA 的密码包；否则，TLS 连接会失败。

**预定义安全策略**  
最新预定义安全策略的名称包括发布预定义安全策略的年份和月份的版本信息。例如，默认预定义安全策略为 `ELBSecurityPolicy-2016-08`。只要发布新的预定义安全策略，您就能更新配置以使用它。

有关为预定义安全策略启用的协议和密码的信息，请参阅 [经典负载均衡器的预定义 SSL 安全策略](elb-security-policy-table.md)。

**自定义安全策略**  
您可使用所需的密码和协议创建自定义协商配置。例如，某些安全合规性标准 (如 PCI 和 SOC) 可能需要一组特定协议和密码，以确保符合安全标准。在这种情况下，可创建自定义安全策略来符合这些标准。

有关创建自定义安全策略的信息，请参阅 [更新经典负载均衡器的 SSL 协商配置](ssl-config-update.md)。

## SSL 协议
<a name="ssl-protocols"></a>

*SSL 协议* 在客户端与服务器之间建立安全连接，确保在客户端与负载均衡器之间传递的所有数据都是私密的。

安全套接字层 (SSL) 和传输层安全性 (TLS) 是用于对通过不安全网络（如 Internet）传输的机密数据进行加密的加密协议。TLS 协议是更新版本的 SSL 协议。在 Elastic Load Balancing 文档中，我们将 SSL 和 TLS 协议都称为 SSL 协议。

**推荐的协议**  
我们推荐 TLS 1.2，它用于策略 T ELBSecurity LS-1-2-2017-01 预定义的安全策略。您也可以在自定义安全策略中使用 TLS 1.2。默认安全策略同时支持 TLS 1.2 和更早版本的 TLS，因此其安全性不如 ELBSecurity策略-TLS-1-2-2017-01。

**已弃用的协议**  
如果之前在自定义策略中启用了 SSL 2.0 协议，我们推荐您将安全策略更新到预定义安全策略之一。

## 服务器顺序首选项
<a name="server-order-preference"></a>

Elastic Load Balancing 支持*服务器顺序首选项*选项，该选项用于协商客户端与负载均衡器之间的连接。在 SSL 连接协商过程中，客户端和负载均衡器会按首选项顺序提供各自支持的密码和协议的列表。默认情况下，会为 SSL 连接选择客户端列表中与任何一个负载均衡器的密码匹配的第一个密码。如果负载均衡器配置为支持服务器顺序首选项，则负载均衡器会在其列表中选择位于客户端的密码列表中的第一个密码。这可确保由负载均衡器确定用于 SSL 连接的密码。如果您未启用服务器顺序首选项，则使用客户端提供的密码顺序来协商客户端与负载均衡器之间的连接。

## SSL 密码
<a name="ssl-ciphers"></a>

*SSL 密码* 是一种加密算法，它使用加密密钥创建编码的消息。SSL 协议使用多种 SSL 密码对 Internet 上的数据进行加密。

请注意，由 AWS Certificate Manager (ACM) 提供的证书包含 RSA 公钥。因此，如果您使用 ACM 提供的证书，则安全策略必须包括一个使用 RSA 的密码包；否则，TLS 连接会失败。

Elastic Load Balancing 支持以下密码以用于经典负载均衡器。预定义的 SSL 策略使用这些密码的子集。所有这些密码可用于自定义策略中。我们建议您仅使用默认安全策略 (带有星号) 中包括的密码。其他许多密码并不安全，需要自行承担使用风险。

**密码**
+ ECDHE-ECDSA--GCM-\$1 AES128 SHA256 
+ ECDHE-RSA--GCM-\$1 AES128 SHA256 
+ ECDHE-ECDSA--\$1 AES128 SHA256 
+ ECDHE-RSA--\$1 AES128 SHA256 
+ ECDHE-ECDSA--SHA \$1 AES128
+ ECDHE-RSA--SHA \$1 AES128
+ DHE-RSA--SHA AES128
+ ECDHE-ECDSA--GCM-\$1 AES256 SHA384 
+ ECDHE-RSA--GCM-\$1 AES256 SHA384 
+ ECDHE-ECDSA--\$1 AES256 SHA384 
+ ECDHE-RSA--\$1 AES256 SHA384 
+ ECDHE-RSA--SHA \$1 AES256
+ ECDHE-ECDSA--SHA \$1 AES256
+ AES128-GCM-\$1 SHA256 
+ AES128-SHA256 \$1
+ AES128-SHA \$1
+ AES256-GCM-\$1 SHA384 
+ AES256-SHA256 \$1
+ AES256-SHA \$1
+ DHE-DSS-SHA AES128
+ CAMELLIA128-SHA
+ EDH-RSA-DES-SHA CBC3
+ DES CBC3--SHA
+ ECDHE-RSA--SHA RC4
+ RC4-SHA
+ ECDHE-ECDSA--SHA RC4
+ DHE-DSS--GCM-AES256 SHA384
+ DHE-RSA--GCM-AES256 SHA384
+ DHE-RSA--AES256 SHA256
+ DHE-DSS--AES256 SHA256
+ DHE-RSA--SHA AES256
+ DHE-DSS-SHA AES256
+ DHE-RSA--SHA CAMELLIA256
+ DHE-DSS-SHA CAMELLIA256
+ CAMELLIA256-SHA
+ EDH-DSS-DES-SHA CBC3
+ DHE-DSS--GCM-AES128 SHA256
+ DHE-RSA--GCM-AES128 SHA256
+ DHE-RSA--AES128 SHA256
+ DHE-DSS--AES128 SHA256
+ DHE-RSA--SHA CAMELLIA128
+ DHE-DSS-SHA CAMELLIA128
+ ADH-AES128-GCM-SHA256
+ ADH AES128--SHA
+ ADH-AES128-SHA256
+ ADH-AES256-GCM-SHA384
+ ADH AES256--SHA
+ ADH-AES256-SHA256
+ ADH CAMELLIA128--SHA
+ ADH CAMELLIA256--SHA
+ ADH-DES--SHA CBC3
+ ADH-DES-CBC-SHA
+ ADH-RC4-MD5
+ ADH-SEED-SHA
+ DES-CBC-SHA
+ DHE-DSS-SEED-SHA
+ DHE-RSA-SEED-SHA
+ EDH-DSS-DES-CBC-SHA
+ EDH-RSA-DES-CBC-SHA
+ IDEA-CBC-SHA
+ RC4-MD5
+ SEED-SHA
+ DES-CBC3-MD5
+ DES-CBC-MD5
+ RC2-加拿大广播公司-MD5
+ PSK--CBC-SH AES256 A
+ PSK-3DES-EDE-CBC-SHA
+ KRB5-DES--SH CBC3 A
+ KRB5-DES--CBC3 MD5
+ PSK--CBC-SH AES128 A
+ PSK--SH RC4 A
+ KRB5-RC4-SHA
+ KRB5-RC4-MD5
+ KRB5-des-CBC-SHA
+ KRB5-DES-CBC-MD5
+ EXP-EDH-RSA-DES-CBC-SHA
+ EXP-EDH-DSS-DES-CBC-SHA
+ EXP-ADH-DES-CBC-SHA
+ EXP-DES-CBC-SHA
+ EXP-RC2-CBC-MD5
+ EXP-KRB5--CBC-SHA RC2
+ EXP--DES-CBC-SHA KRB5
+ EXP-KRB5-RC2-CBC-MD5
+ EXP--DES KRB5-CBC-MD5
+ EXP-ADH--RC4 MD5
+ EXP--RC4 MD5
+ EXP-KRB5--SHA RC4
+ EXP-KRB5--RC4 MD5

\$1 这些是默认安全策略 Policy-2016-08 中包含的密码。 ELBSecurity

## 用于后端连接的密码套件
<a name="elb-backend-cipher-suite"></a>

经典负载均衡器使用静态密码套件建立后端连接。如果您的经典负载均衡器和注册实例无法协商连接，请包含以下密码之一。
+ AES256-GCM-SHA384
+ AES256-SHA256
+ AES256-SHA
+ CAMELLIA256-SHA
+ AES128-GCM-SHA256
+ AES128-SHA256
+ AES128-SHA
+ CAMELLIA128-SHA
+ RC4-SHA
+ DES CBC3--SHA
+ DES-CBC-SHA
+ DHE-DSS--GCM-AES256 SHA384
+ DHE-RSA--GCM-AES256 SHA384
+ DHE-RSA--AES256 SHA256
+ DHE-DSS--AES256 SHA256
+ DHE-RSA--SHA AES256
+ DHE-DSS-SHA AES256
+ DHE-RSA--SHA CAMELLIA256
+ DHE-DSS-SHA CAMELLIA256
+ DHE-DSS--GCM-AES128 SHA256
+ DHE-RSA--GCM-AES128 SHA256
+ DHE-RSA--AES128 SHA256
+ DHE-DSS--AES128 SHA256
+ DHE-RSA--SHA AES128
+ DHE-DSS-SHA AES128
+ DHE-RSA--SHA CAMELLIA128
+ DHE-DSS-SHA CAMELLIA128
+ EDH-RSA-DES-SHA CBC3
+ EDH-DSS-DES-SHA CBC3
+ EDH-RSA-DES-CBC-SHA
+ EDH-DSS-DES-CBC-SHA

# 经典负载均衡器的预定义 SSL 安全策略
<a name="elb-security-policy-table"></a>

您可以为 HTTPS/SSL 侦听器选择预定义的安全策略之一。您可以使用 `ELBSecurityPolicy-TLS` 策略之一来满足要求禁用某些 TLS 协议版本的合规性和安全标准。或者，您也可以创建自定义安全策略。有关更多信息，请参阅 [更新 SSL 协商配置](ssl-config-update.md)。

基于 RSA 和 DSA 的密码特定于用于创建 SSL 证书的签名算法。请确保使用基于为安全策略启用的密码的签名算法来创建 SSL 证书。

如果选择为“服务器顺序首选项”启用的策略，则负载均衡器会按密码在这里的指定顺序使用密码，以协商客户端与负载均衡器之间的连接。否则，负载均衡器会按客户端提供的密码的顺序使用密码。



以下章节介绍了经典负载均衡器的最新预定义安全策略，包括其启用的 SSL 协议和 SSL 密码。您也可以使用[describe-load-balancer-policies](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancer-policies.html)命令描述预定义的策略。

**提示**  
这些信息仅适用于经典负载均衡器。有关适用于其他负载均衡器的信息，请参阅[适用于应用程序负载均衡器的安全策略](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/describe-ssl-policies.html)和[适用于网络负载均衡器的安全策略](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/describe-ssl-policies.html)。

**Topics**
+ [

## 按策略划分的协议
](#tls-protocols)
+ [

## 按策略划分的密码
](#tls-policy-ciphers)
+ [

## 按密码划分的策略
](#tls-cipher-policies)

## 按策略划分的协议
<a name="tls-protocols"></a>

下表描述了每个安全策略支持的 TLS 协议。


| 安全策略 | TLS 1.2 | TLS 1.1 | TLS 1.0 | 
| --- | --- | --- | --- | 
| ELBSecurityPolicy-tls-1-2-2017-01 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/images/negative_icon.svg)没有 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/images/negative_icon.svg)没有 | 
| ELBSecurity政策-tls-1-1-2017-01 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/images/negative_icon.svg)没有 | 
| ELBSecurity政策-2016-08 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/images/success_icon.svg) 是 | 
| ELBSecurity政策-2015-05 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/images/success_icon.svg) 是 | 
| ELBSecurity政策-2015-03 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/images/success_icon.svg) 是 | 
| ELBSecurity政策-2015-02 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/images/success_icon.svg) 是 | ![\[alt text not found\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/images/success_icon.svg) 是 | 

## 按策略划分的密码
<a name="tls-policy-ciphers"></a>

下表描述了每个安全策略支持的密码。


| 安全策略 | 密码 | 
| --- | --- | 
| ELBSecurityPolicy-tls-1-2-2017-01 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | 
| ELBSecurity政策-tls-1-1-2017-01 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | 
| ELBSecurity政策-2016-08 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | 
| ELBSecurity政策-2015-05 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | 
| ELBSecurity政策-2015-03 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | 
| ELBSecurity政策-2015-02 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | 

## 按密码划分的策略
<a name="tls-cipher-policies"></a>

下表描述了支持每个密码的安全策略。


| 密码名称 | 安全策略 | 密码套件 | 
| --- | --- | --- | 
|  **OpenSSL** — ECDHE-ECDSA-AES 128-GCM-SHA256 **IANA** — TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1128\$1GCM\$1 SHA256  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | c02b | 
|  **OpenSSL** — ECDHE-RSA-AES 128-GCM-SHA256 **IANA** — TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1 SHA256  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | c02f | 
|  **OpenSSL — 12** 8- ECDHE-ECDSA-AES SHA256 **IANA** — TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1128\$1CBC\$1 SHA256  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | c023 | 
|  **OpenSSL — 12** 8- ECDHE-RSA-AES SHA256 **IANA** — TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1 SHA256  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | c027 | 
|  **OpenSSL — 128**-SHA ECDHE-ECDSA-AES **IANA**：TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1128\$1CBC\$1SHA  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | c009 | 
|  **OpenSSL — 128**-SHA ECDHE-RSA-AES **IANA**：TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | c013 | 
|  **OpenSSL** — ECDHE-ECDSA-AES 256-GCM-SHA384 **IANA** — TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1 SHA384  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | c02c | 
|  **OpenSSL** — ECDHE-RSA-AES 256-GCM-SHA384 **IANA** — TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1 SHA384  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | c030 | 
|  **OpenSSL — 25** 6- ECDHE-ECDSA-AES SHA384 **IANA** — TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1 SHA384  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | c024 | 
|  **OpenSSL — 25** 6- ECDHE-RSA-AES SHA384 **IANA** — TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1 SHA384  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | c028 | 
|  **OpenSSL — 256-SHA** ECDHE-ECDSA-AES **IANA**：TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | c014 | 
|  **OpenSSL — 256-SHA** ECDHE-RSA-AES **IANA**：TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1SHA  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | c00a | 
|  **OpenSSL —- AES128 G** CM-SHA256 **IANA** — TLS\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1 SHA256  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | 9c | 
|  **OpenSSL —**- AES128 SHA256 **IANA** — TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1 SHA256  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | 3c | 
|  **OpenSSL —**-SHA AES128 **IANA**：TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | 2f | 
|  **OpenSSL —- AES256 G** CM-SHA384 **IANA** — TLS\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1 SHA384  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | 9d | 
|  **OpenSSL —**- AES256 SHA256 **IANA** — TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1 SHA256  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | 3d | 
|  **OpenSSL —**-SHA AES256 **IANA**：TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | 35 | 
|  **OpenSSL — 128**-SHA DHE-RSA-AES **IANA**：TLS\$1DHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | 33 | 
|  **OpenSSL — 128**-SHA DHE-DSS-AES **IANA**：TLS\$1DHE\$1DSS\$1WITH\$1AES\$1128\$1CBC\$1SHA  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | 32 | 
|  **OpenSSL** — DES-SHA CBC3 **IANA**：TLS\$1RSA\$1WITH\$13DES\$1EDE\$1CBC\$1SHA  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-security-policy-table.html)  | 0a | 

# 创建带有 HTTPS 侦听器的经典负载均衡器
<a name="elb-create-https-ssl-load-balancer"></a>

负载均衡器从客户端获取请求，并在注册到负载均衡器的 EC2 实例之间分发这些请求。

您可以创建一个同时侦听 HTTP (80) 和 HTTPS (443) 端口的负载均衡器。如果指定 HTTPS 侦听器将请求发送到端口 80 上的实例，则负载均衡器将终止请求，并且不加密从负载均衡器到实例的通信。如果 HTTPS 侦听器将请求发送到端口 443 上的实例，则对从负载均衡器到实例的通信进行加密。

如果负载均衡器使用加密连接与实例通信，您可以选择启用实例身份验证。这可确保只有在实例的公钥与您出于通信目的为负载均衡器指定的密钥匹配时，负载均衡器才与实例通信。

有关如何向现有负载均衡器添加 HTTPS 侦听器的信息，请参阅[为您的经典负载均衡器配置 HTTPS 侦听器](elb-add-or-delete-listeners.md)。

**Topics**
+ [

## 前提条件
](#elb-https-ssl-prerequisites)
+ [

## 使用控制台创建 HTTPS 负载均衡器
](#create-https-lb-console)
+ [

## 使用创建 HTTPS 负载均衡器 AWS CLI
](#create-https-lb-clt)

## 前提条件
<a name="elb-https-ssl-prerequisites"></a>

在您开始之前，请确保您已符合以下先决条件：
+ 完成 [关于 VPC 的建议](elb-backend-instances.md#set-up-ec2) 中的步骤。
+ 启动您计划向负载均衡器注册的 EC2 实例。这些实例的安全组必须允许来自负载均衡器的流量。
+ EC2 实例必须使用 HTTP 状态代码 200 响应运行状况检查的目标。有关更多信息，请参阅 [对经典负载均衡器中的实例执行运行状况检查](elb-healthchecks.md)。
+ 如果您计划在 EC2 实例上启用保持活动状态功能，我们建议将保持活动状态设置至少设置为负载均衡器的空闲超时设置。如果要确保由负载均衡器负责关闭与实例的连接，请确保在实例上设置的保持活动时间值要大于在负载均衡器上设置的空闲超时设置。有关更多信息，请参阅 [配置经典负载均衡器的空闲连接超时](config-idle-timeout.md)。
+ 如果您创建安全侦听器，必须在负载均衡器上部署 SSL 服务器证书。负载均衡器会在将请求发送到实例之前，使用证书终止并解密请求。如果您没有 SSL 证书，您可以创建一个。有关更多信息，请参阅 [经典负载均衡器的 SSL/TLS 证书](ssl-server-cert.md)。

## 使用控制台创建 HTTPS 负载均衡器
<a name="create-https-lb-console"></a>

在此示例中，您为负载均衡器配置了两个侦听器。第一个侦听器接收端口 80 上的 HTTP 请求，并使用 HTTP 在端口 80 上向实例发送这些请求。第二个侦听器接受端口 443 上的 HTTPS 请求，并使用端口 80 上的 HTTP (如果您希望配置后端实例身份验证，请使用端口 443 上的 HTTPS) 向实例发送这些请求。

*侦听器*是用于检查连接请求的进程。使用前端 (客户端到负载均衡器) 连接的协议和端口与后端 (负载均衡器到实例) 连接的协议和端口配置侦听器。有关 Elastic Load Balancing 支持的端口、协议和侦听器配置的信息，请参阅[经典负载均衡器的侦听器](elb-listener-config.md)。

**使用控制台创建安全的经典负载均衡器**

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon EC2 控制台。

1. 在导航栏上，选择您的负载均衡器所在的区域。请确保选择您为 EC2 实例选择的同一个区域。

1. 在导航窗格上的 **Load Balancing**（负载均衡）下，选择 **Load Balancers**（负载均衡器）。

1. 选择 **Create Load Balancer (创建负载均衡器)**。

1. 展开**经典负载均衡器**部分，然后选择**创建**。

1. **基本配置**

   1. 对于**负载均衡器名称**，键入负载均衡器的名称。

      在当前区域的经典负载均衡器集内，经典负载均衡器的名称必须唯一，最多可以有 32 个字符，只能包含字母数字字符和连字符，不能以连字符开头或结尾。

   1. 对于**模式**，选择**面向互联网**。

1. **网络映射**

   1. 对于 **VPC**，选择您为实例选择的 VPC。

   1. 对于**映射**，首先选择一个可用区，然后从其可用子网中选择一个公有子网。每个可用区只能选择一个子网。要提高负载均衡器的可用性，请选择多个可用区和子网。

1. **安全组**

   1. 对于**安全组**，选择一个配置为允许在端口 80 上传输所需 HTTP 流量以及在端口 443 上传输所需 HTTPS 流量的现有安全组。

     如果安全组不存在，则可以创建一个具有必要规则的新安全组。

1. **侦听器和路由**

   1. 保留默认侦听器的默认设置，然后选择**添加侦听器**。

   1. 对于新侦听器的**侦听器**部分，选择 `HTTPS`，因为协议和端口将更新为 `443`。默认情况下，**实例**将使用 `HTTP` 协议和端口 `80`。

   1. 如果需要进行后端身份验证，请将**实例**协议更改为 `HTTPS`。此操作还会将**实例**端口更改为 `443`。

1. **安全侦听器设置**

   当您对前端侦听器使用 HTTPS 或 SSL 时，必须在负载均衡器上部署 SSL 证书。负载均衡器先使用此证书终止连接，解密来自客户端的请求，然后再将请求发送到实例。您还必须指定安全策略。Elastic Load Balancing 提供了已预定义 SSL 协商配置的安全策略，您也可以创建自己的自定义安全策略。如果您在后端连接 HTTPS/SSL 上进行了配置，则可以启用实例的身份验证。

   1. 对于**安全策略**，建议您始终使用最新的预定义安全策略，您也可创建自定义的策略。请参阅 [更新 SSL 协商配置](ssl-config-update.md#ssl-config-update-console)。

   1. 对于**默认 SSL/TLS 证书**，有以下选项可用：
      + 如果您使用创建或导入了证书 AWS Certificate Manager，请选择来**自 ACM**，然后从 “选择证书**” 中选择证书**。
      + 如果使用 IAM 导入了证书，请选择**从 IAM**，然后在**选择证书**中选择该证书。
      + 如果您有要导入的证书，但您所在的区域不提供 ACM，请选择**导入**，然后选择**到 IAM**。在**证书名称**字段中输入证书的名称。在**证书私有密钥**中，复制并粘贴私有密钥文件（PEM 编码的文件）的内容。在**证书正文**中，复制并粘贴公有密钥证书文件（PEM 编码的文件）的内容。在 **Certificate Chain** 中，复制并粘贴证书链文件（PEM 编码的文件）的内容，除非您使用的是自签名证书并且浏览器是否隐式接受证书并不重要。

   1. （可选）如果您将 HTTPS 侦听器配置为使用加密连接与实例通信，则可以选择在**后端身份验证证书**中设置实例身份验证。
**注意**  
如果看不到**后端身份验证证书**部分，请返回**侦听器和路由**部分，然后对于**实例**的协议选择 `HTTPS`。

      1. 对于 **Certificate name**，键入公钥证书的名称。

      1. 对于**证书正文（PEM 编码）**，复制并粘贴该证书的内容。只有在实例的公钥与此密钥匹配时，负载均衡器才会与该实例通信。

      1. 要添加其他证书，请选择**添加新后端证书**。最多可以添加五个。

1. **运行状况检查**

   1. 在 **Ping 目标**部分中，选择一个 **Ping 协议**和 **Ping 端口**。您的 EC2 实例必须接受指定 Ping 端口上的流量。

   1. 对于 **Ping 端口**，确保端口为 `80`。

   1. 对于 **Ping 路径**，请将默认值替换为单正斜线（`/`）。这会指示 Elastic Load Balancing 将运行状况检查请求发送到您的 Web 服务器的默认主页，如 `index.html`。

   1. 对于**高级运行状况检查设置**，请使用默认值。

1. **实例**

   1. 选择**添加实例**，这时将显示实例选择页面。

   1. 在**可用实例**下，您可以根据之前选择的网络设置，从负载均衡器可用的当前实例中进行选择。

   1. 确认选择无误后，选择**确认**以将要注册的实例添加到负载均衡器。

1. **属性**

   1. 对于**启用跨可用区负载均衡**、**启用连接耗尽**以及**超时（耗尽间隔时间）**，请保留默认值。

1. **负载均衡器标签（可选）**

   1. **键**字段为必填项。

   1. **值**字段为可选项。

   1. 要添加其他标签，请选择**添加新标签**，然后输入**键**字段的值，以及可选的**值**字段的值。

   1. 要移除现有标签，请选择要移除的标签旁的**移除**。

1. **摘要和创建**

   1. 如果需要更改任何设置，请选择需要更改的设置旁的**编辑**。

   1. 确认摘要中显示的所有设置无误后，选择**创建负载均衡器**以开始创建负载均衡器。

   1. 在最后的创建页面上，选择**查看负载均衡器**，以在 Amazon EC2 控制台中查看负载均衡器。

1. **Verify**

   1. 选择新的负载均衡器。

   1. 在**目标实例**选项卡中，选中**运行状态**列。至少一个 EC2 实例处于**使用中**状态后，便可测试负载均衡器。

   1. 在**详细信息**部分中，复制负载均衡器的 **DNS 名称**，这看起来类似于 `my-load-balancer-1234567890.us-east-1.elb.amazonaws.com`。

   1. 将负载均衡器的 **DNS 名称**粘贴到已连接到公共互联网的 Web 浏览器地址栏中。如果负载均衡器运行正常，则会看到服务器的默认页面。

1. **删除（可选）**

   1. 如果您有一个指向负载均衡器的域的一个别名记录，请将它指向新的位置并等待 DNS 更改生效，然后再删除您的负载均衡器。

   1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon EC2 控制台。

   1. 选择负载均衡器。

   1. 依次选择**操作**、**删除负载均衡器**。

   1. 提示进行确认时，键入 `confirm`，然后选择**删除**。

   1. 删除负载均衡器后，注册到该负载均衡器中的 EC2 实例将继续运行。您将按实例继续运行的部分或完整小时数付费。如果您不再需要某个 EC2 实例时，可以将其停止或终止，以免产生额外的费用。

## 使用创建 HTTPS 负载均衡器 AWS CLI
<a name="create-https-lb-clt"></a>

按照以下说明使用创建 HTTPS/SSL 负载均衡器 AWS CLI。

**Topics**
+ [

### 步骤 1：配置侦听器
](#configuring_listener_clt)
+ [

### 步骤 2：配置 SSL 安全策略
](#configure_ciphers_clt)
+ [

### 步骤 3：配置后端实例身份验证（可选）
](#configure_backendauth_clt)
+ [

### 步骤 4：配置运行状况检查（可选）
](#configure_healthcheck_clt)
+ [

### 步骤 5：注册 EC2 实例
](#add_ec2instances_clt)
+ [

### 步骤 6：验证实例
](#verify-ec2instances-clt)
+ [

### 步骤 7：删除您的负载均衡器（可选）
](#us-tearing-lb-cli)

### 步骤 1：配置侦听器
<a name="configuring_listener_clt"></a>

*侦听器*是用于检查连接请求的进程。使用前端 (客户端到负载均衡器) 连接的协议和端口与后端 (负载均衡器到实例) 连接的协议和端口配置侦听器。有关 Elastic Load Balancing 支持的端口、协议和侦听器配置的信息，请参阅[经典负载均衡器的侦听器](elb-listener-config.md)。

在此示例中，通过指定要用于前端和后端连接的端口和协议为您的负载均衡器配置两个侦听器。第一个侦听器接收端口 80 上的 HTTP 请求，并使用 HTTP 在端口 80 上向实例发送这些请求。第二个侦听器接受端口 443 上的 HTTPS 请求，并使用端口 80 上的 HTTP 向实例发送这些请求。

因为第二个侦听器在前端连接中使用 HTTPS，所以您必须在负载均衡器上部署 SSL 服务器证书。负载均衡器会在将请求发送到实例之前，使用证书终止并解密请求。

**为您的负载均衡器配置侦听器**

1. 获取 SSL 证书的 Amazon Resource Name (ARN)。例如：

   **ACM**

   ```
   arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012
   ```

   **IAM**

   ```
   arn:aws:iam::123456789012:server-certificate/my-server-certificate
   ```

1. 使用以下[create-load-balancer](https://docs.aws.amazon.com/cli/latest/reference/elb/create-load-balancer.html)命令为负载均衡器配置两个侦听器：

   ```
   aws elb create-load-balancer --load-balancer-name my-load-balancer --listeners "Protocol=http,LoadBalancerPort=80,InstanceProtocol=http,InstancePort=80" "Protocol=https,LoadBalancerPort=443,InstanceProtocol=http,InstancePort=80,SSLCertificateId="ARN" --availability-zones us-west-2a
   ```

   以下为响应示例：

   ```
   {
     "DNSName": "my-loadbalancer-012345678.us-west-2.elb.amazonaws.com"
   }
   ```

1. （可选）使用以下[describe-load-balancers](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancers.html)命令查看您的负载均衡器的详细信息：

   ```
   aws elb describe-load-balancers --load-balancer-name my-load-balancer
   ```

### 步骤 2：配置 SSL 安全策略
<a name="configure_ciphers_clt"></a>

您可选择预定义安全策略之一，或者可创建自己的自定义安全策略。否则，Elastic Load Balancing 使用默认预定义安全策略 `ELBSecurityPolicy-2016-08` 配置您的负载均衡器。有关更多信息，请参阅 [经典负载均衡器的 SSL 协商配置](elb-ssl-security-policy.md)。

**验证您的负载均衡器是否与默认安全策略关联**  
使用以下 [describe-load-balancers](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancers.html) 命令：

```
aws elb describe-load-balancers --load-balancer-name my-loadbalancer
```

以下为响应示例。请注意，`ELBSecurityPolicy-2016-08` 已在端口 443 上与负载均衡器关联。

```
{
    "LoadBalancerDescriptions": [
        {
            ...
            "ListenerDescriptions": [
                {
                    "Listener": {
                        "InstancePort": 80, 
                        "SSLCertificateId": "ARN", 
                        "LoadBalancerPort": 443, 
                        "Protocol": "HTTPS", 
                        "InstanceProtocol": "HTTP"
                    }, 
                    "PolicyNames": [
                        "ELBSecurityPolicy-2016-08"
                    ]
                }, 
                {
                    "Listener": {
                        "InstancePort": 80, 
                        "LoadBalancerPort": 80, 
                        "Protocol": "HTTP", 
                        "InstanceProtocol": "HTTP"
                    }, 
                    "PolicyNames": []
                }
            ],
            ...
        }
    ]
}
```

如果您愿意，可以为您的负载均衡器配置 SSL 安全策略，而不是使用默认安全策略。

**（可选）使用预定义 SSL 安全策略**

1. 使用以下[describe-load-balancer-policies](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancer-policies.html)命令列出预定义安全策略的名称：

   ```
   aws elb describe-load-balancer-policies
   ```

   有关预定义安全策略的配置的信息，请参阅[经典负载均衡器的预定义 SSL 安全策略](elb-security-policy-table.md)。

1. 使用以下[create-load-balancer-policy](https://docs.aws.amazon.com/cli/latest/reference/elb/create-load-balancer-policy.html)命令使用您在上一步中描述的预定义安全策略之一创建 SSL 协商策略：

   ```
   aws elb create-load-balancer-policy --load-balancer-name my-loadbalancer
   --policy-name my-SSLNegotiation-policy --policy-type-name SSLNegotiationPolicyType 
   --policy-attributes AttributeName=Reference-Security-Policy,AttributeValue=predefined-policy
   ```

1. （可选）使用以下[describe-load-balancer-policies](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancer-policies.html)命令验证策略是否已创建：

   ```
   aws elb describe-load-balancer-policies --load-balancer-name my-loadbalancer --policy-name my-SSLNegotiation-policy
   ```

   响应包括策略的描述。

1. 使用以下 [set-load-balancer-policiesof-listener](https://docs.aws.amazon.com/cli/latest/reference/elb/set-load-balancer-policies-of-listener.html) 命令在负载均衡器端口 443 上启用该策略：

   ```
   aws elb set-load-balancer-policies-of-listener --load-balancer-name my-loadbalancer --load-balancer-port 443 --policy-names my-SSLNegotiation-policy
   ```
**注意**  
`set-load-balancer-policies-of-listener` 命令将指定负载均衡器端口的当前策略集替换为指定的策略集。`--policy-names` 列表必须包括要启用的所有策略。如果您省略当前已启用的策略，则禁用此策略。

1. （可选）使用以下[describe-load-balancers](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancers.html)命令验证策略是否已启用：

   ```
   aws elb describe-load-balancers --load-balancer-name my-loadbalancer
   ```

   以下是指明已在端口 443 上启用策略的响应示例。

   ```
   {
       "LoadBalancerDescriptions": [
           {
               ....
               "ListenerDescriptions": [
                   {
                       "Listener": {
                           "InstancePort": 80, 
                           "SSLCertificateId": "ARN", 
                           "LoadBalancerPort": 443, 
                           "Protocol": "HTTPS", 
                           "InstanceProtocol": "HTTP"
                       }, 
                       "PolicyNames": [
                           "my-SSLNegotiation-policy"
                       ]
                   }, 
                   {
                       "Listener": {
                           "InstancePort": 80, 
                           "LoadBalancerPort": 80, 
                           "Protocol": "HTTP", 
                           "InstanceProtocol": "HTTP"
                       }, 
                       "PolicyNames": []
                   }
               ],
               ...
           }
       ]
   }
   ```

当您创建自定义安全策略时，必须至少启用一项协议和一个密码。DSA 和 RSA 密码特定于签名算法，用于创建 SSL 证书。如果您已有 SSL 证书，请确保启用用于创建证书的密码。您的自定义策略的名称不得以 `ELBSecurityPolicy-` 或 `ELBSample-` 开头，因为这些前缀是为预定义安全策略的名称保留的。

**（可选）使用自定义 SSL 安全策略**

1. 使用[create-load-balancer-policy](https://docs.aws.amazon.com/cli/latest/reference/elb/create-load-balancer-policy.html)命令使用自定义安全策略创建 SSL 协商策略。例如：

   ```
   aws elb create-load-balancer-policy --load-balancer-name my-loadbalancer 
    --policy-name my-SSLNegotiation-policy --policy-type-name SSLNegotiationPolicyType 
    --policy-attributes AttributeName=Protocol-TLSv1.2,AttributeValue=true 
    AttributeName=Protocol-TLSv1.1,AttributeValue=true 
    AttributeName=DHE-RSA-AES256-SHA256,AttributeValue=true 
    AttributeName=Server-Defined-Cipher-Order,AttributeValue=true
   ```

1. （可选）使用以下[describe-load-balancer-policies](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancer-policies.html)命令验证策略是否已创建：

   ```
   aws elb describe-load-balancer-policies --load-balancer-name my-loadbalancer --policy-name my-SSLNegotiation-policy
   ```

   响应包括策略的描述。

1. 使用以下 [set-load-balancer-policiesof-listener](https://docs.aws.amazon.com/cli/latest/reference/elb/set-load-balancer-policies-of-listener.html) 命令在负载均衡器端口 443 上启用该策略：

   ```
   aws elb set-load-balancer-policies-of-listener --load-balancer-name my-loadbalancer --load-balancer-port 443 --policy-names my-SSLNegotiation-policy
   ```
**注意**  
`set-load-balancer-policies-of-listener` 命令将指定负载均衡器端口的当前策略集替换为指定的策略集。`--policy-names` 列表必须包括要启用的所有策略。如果您省略当前已启用的策略，则禁用此策略。

1. （可选）使用以下[describe-load-balancers](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancers.html)命令验证策略是否已启用：

   ```
   aws elb describe-load-balancers --load-balancer-name my-loadbalancer
   ```

   以下是指明已在端口 443 上启用策略的响应示例。

   ```
   {
       "LoadBalancerDescriptions": [
           {
               ....
               "ListenerDescriptions": [
                   {
                       "Listener": {
                           "InstancePort": 80, 
                           "SSLCertificateId": "ARN", 
                           "LoadBalancerPort": 443, 
                           "Protocol": "HTTPS", 
                           "InstanceProtocol": "HTTP"
                       }, 
                       "PolicyNames": [
                           "my-SSLNegotiation-policy"
                       ]
                   }, 
                   {
                       "Listener": {
                           "InstancePort": 80, 
                           "LoadBalancerPort": 80, 
                           "Protocol": "HTTP", 
                           "InstanceProtocol": "HTTP"
                       }, 
                       "PolicyNames": []
                   }
               ],
               ...
           }
       ]
   }
   ```

### 步骤 3：配置后端实例身份验证（可选）
<a name="configure_backendauth_clt"></a>

如果您在后端连接 HTTPS/SSL 上进行了设置，则可以选择设置实例的身份验证。

在设置后端实例身份验证时，您将创建一个公钥策略。接下来，您可使用此公钥策略创建后端实例身份验证策略。最后，使用 HTTPS 协议的实例端口设置后端实例身份验证策略。

只有在实例提供给负载均衡器的公钥与负载均衡器的身份验证策略中的公钥匹配时，负载均衡器才会与实例通信。

**配置后端实例身份验证**

1. 使用以下命令检索公钥：

   ```
   openssl x509 -in your X509 certificate PublicKey -pubkey -noout
   ```

1. 使用以下[create-load-balancer-policy](https://docs.aws.amazon.com/cli/latest/reference/elb/create-load-balancer-policy.html)命令创建公钥策略：

   ```
   aws elb create-load-balancer-policy --load-balancer-name my-loadbalancer --policy-name my-PublicKey-policy \
   --policy-type-name PublicKeyPolicyType --policy-attributes AttributeName=PublicKey,AttributeValue=MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w
    0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ
    WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw
    EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5
    jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh
    MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb
    WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx
    HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE
    BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI
    k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ
    ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr
    AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN
    KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo
    EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw
    3rrszlaEXAMPLE=
   ```
**注意**  
要指定 `--policy-attributes` 的公钥值，请删除公钥的第一行和最后一行内容 (包含“`-----BEGIN PUBLIC KEY-----`”和“`-----END PUBLIC KEY-----`”的两行)。 AWS CLI 不接受中的空格字符`--policy-attributes`。

1. 使用以下[create-load-balancer-policy](https://docs.aws.amazon.com/cli/latest/reference/elb/create-load-balancer-policy.html)命令使用创建后端实例身份验证`my-PublicKey-policy`策略。

   ```
   aws elb create-load-balancer-policy --load-balancer-name my-loadbalancer --policy-name my-authentication-policy --policy-type-name BackendServerAuthenticationPolicyType --policy-attributes AttributeName=PublicKeyPolicyName,AttributeValue=my-PublicKey-policy
   ```

   您可以选择使用多个公钥策略。负载均衡器会尝试所有密钥，一次尝试一个。如果实例提供的公钥与其中一个公钥匹配，则表示此实例已经过身份验证。

1. 使用以下 [set-load-balancer-policies-for-backend-server](https://docs.aws.amazon.com/cli/latest/reference/elb/set-load-balancer-policies-for-backend-server.html) 命令设置`my-authentication-policy`为 HTTPS 的实例端口。在此示例中，实例端口为端口 443。

   ```
   aws elb set-load-balancer-policies-for-backend-server --load-balancer-name my-loadbalancer --instance-port 443 --policy-names my-authentication-policy
   ```

1. （可选）使用以下[describe-load-balancer-policies](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancer-policies.html)命令列出您的负载均衡器的所有策略：

   ```
   aws elb describe-load-balancer-policies --load-balancer-name my-loadbalancer
   ```

1. （可选）使用以下[describe-load-balancer-policies](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancer-policies.html)命令查看策略的详细信息：

   ```
   aws elb describe-load-balancer-policies --load-balancer-name my-loadbalancer --policy-names my-authentication-policy
   ```

### 步骤 4：配置运行状况检查（可选）
<a name="configure_healthcheck_clt"></a>

Elastic Load Balancing 根据已配置的运行状况检查定期检查每个已注册 EC2 实例的运行状况。如果 Elastic Load Balancing 发现某一运行不正常的实例，它会停止向这个实例发送流量，并将流量路由到运行正常的实例。有关更多信息，请参阅 [对经典负载均衡器中的实例执行运行状况检查](elb-healthchecks.md)。

当您创建负载均衡器时，Elastic Load Balancing 会使用运行状况检查的默认设置。如果您愿意，您可更改负载均衡器的运行状况检查配置，而不是使用默认设置。

**为您的实例配置运行状况检查**  
使用以下 [configure-health-check](https://docs.aws.amazon.com/cli/latest/reference/elb/configure-health-check.html) 命令：

```
aws elb configure-health-check --load-balancer-name my-loadbalancer --health-check Target=HTTP:80/ping,Interval=30,UnhealthyThreshold=2,HealthyThreshold=2,Timeout=3
```

以下为响应示例：

```
{
    "HealthCheck": {
        "HealthyThreshold": 2,
        "Interval": 30,
        "Target": "HTTP:80/ping",
        "Timeout": 3,
        "UnhealthyThreshold": 2
    }
}
```

### 步骤 5：注册 EC2 实例
<a name="add_ec2instances_clt"></a>

在创建负载均衡器之后，您必须向负载均衡器注册 EC2 实例。您可在负载均衡器所在的区域内的单个或多个可用区中选择 EC2 实例。有关更多信息，请参阅 [经典负载均衡器的已注册实例](elb-backend-instances.md)。

按如下方式使用 [register-instances-with-load-balancer](https://docs.aws.amazon.com/cli/latest/reference/elb/register-instances-with-load-balancer.html) 命令：

```
aws elb register-instances-with-load-balancer --load-balancer-name my-loadbalancer --instances i-4f8cf126 i-0bb7ca62
```

以下为响应示例：

```
{
    "Instances": [
        {
            "InstanceId": "i-4f8cf126"
        },
        {
            "InstanceId": "i-0bb7ca62"
        }
    ]
}
```

### 步骤 6：验证实例
<a name="verify-ec2instances-clt"></a>

当您的任何一个已注册实例处于 `InService` 状态后，您的负载均衡器即可使用。

要检查您新注册的 EC2 实例的状态，请使用以下[describe-instance-health](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-instance-health.html)命令：

```
aws elb describe-instance-health  --load-balancer-name my-loadbalancer --instances i-4f8cf126 i-0bb7ca62
```

以下为响应示例：

```
{
    "InstanceStates": [
        {
            "InstanceId": "i-4f8cf126", 
            "ReasonCode": "N/A", 
            "State": "InService", 
            "Description": "N/A"
        }, 
        {
            "InstanceId": "i-0bb7ca62", 
            "ReasonCode": "Instance", 
            "State": "OutOfService", 
            "Description": "Instance registration is still in progress"
        }
    ]
}
```

如果实例的 `State` 字段为 `OutOfService`，则可能是因为您的实例仍在注册中。有关更多信息，请参阅 [对经典负载均衡器进行故障排除：实例注册](ts-elb-register-instance.md)。

在您的至少一个实例的状态为 `InService` 后，便可测试负载均衡器。要测试您的负载均衡器，请复制负载均衡器的 DNS 名称，然后将其粘贴到已连接 Internet 的 Web 浏览器的地址栏中。如果您的负载均衡器正在运行，您会看到 HTTP 服务器的默认页面。

### 步骤 7：删除您的负载均衡器（可选）
<a name="us-tearing-lb-cli"></a>

删除负载均衡器会自动注销其关联的 EC2 实例。当负载均衡器被删除之后，您便不再需要支付负载均衡器费用。不过，EC2 实例将继续运行，并且您仍需付费。

要删除您的负载均衡器，请使用以下[delete-load-balancer](https://docs.aws.amazon.com/cli/latest/reference/elb/delete-load-balancer.html)命令：

```
aws elb delete-load-balancer --load-balancer-name my-loadbalancer
```

要停止您的 EC2 实例，请使用 [stop-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html) 命令。要终止您的 EC2 实例，请使用 [terminate-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/terminate-instances.html) 命令。

# 为您的经典负载均衡器配置 HTTPS 侦听器
<a name="elb-add-or-delete-listeners"></a>

*侦听器*是用于检查连接请求的进程。使用前端 (客户端到负载均衡器) 连接的协议和端口与后端 (负载均衡器到实例) 连接的协议和端口配置侦听器。有关 Elastic Load Balancing 支持的端口、协议和侦听器配置的信息，请参阅[经典负载均衡器的侦听器](elb-listener-config.md)。

如果您的负载均衡器具有接受端口 80 上的 HTTP 请求的侦听器，则可以添加接受端口 443 上的 HTTPS 请求的侦听器。如果指定 HTTPS 侦听器将请求发送到端口 80 上的实例，则负载均衡器将终止 SSL 请求，并且不加密从负载均衡器到实例的通信。如果 HTTPS 侦听器将请求发送到端口 443 上的实例，则对从负载均衡器到实例的通信进行加密。

如果负载均衡器使用加密连接与实例通信，您可以选择启用实例身份验证。这可确保只有在实例的公钥与您出于通信目的为负载均衡器指定的密钥匹配时，负载均衡器才与实例通信。

有关创建新的 HTTPS 侦听器的信息，请参阅[创建带有 HTTPS 侦听器的经典负载均衡器](elb-create-https-ssl-load-balancer.md)。

**Topics**
+ [

## 前提条件
](#add-listener-prerequisites)
+ [

## 使用控制台添加 HTTPS 侦听器
](#add-listener-console)
+ [

## 使用添加 HTTPS 监听器 AWS CLI
](#add-listener-cli)

## 前提条件
<a name="add-listener-prerequisites"></a>

若要为 HTTPS 侦听器启用 HTTPS 支持，您必须在负载均衡器上部署 SSL 服务器证书。负载均衡器会在将请求发送到实例之前，使用证书终止并解密请求。如果您没有 SSL 证书，您可以创建一个。有关更多信息，请参阅 [经典负载均衡器的 SSL/TLS 证书](ssl-server-cert.md)。

## 使用控制台添加 HTTPS 侦听器
<a name="add-listener-console"></a>

您可以将 HTTPS 监听器添加到现有负载均衡器。

**使用控制台向负载均衡器添加 HTTPS 侦听器**

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon EC2 控制台。

1. 在导航窗格上的 **Load Balancing**（负载均衡）下，选择 **Load Balancers**（负载均衡器）。

1. 选择负载均衡器的名称以打开其详细信息页面。

1. 在**侦听器**选项卡上，选择**管理侦听器**。

1. 在**管理侦听器**页面的**侦听器**部分中，选择**添加侦听器**。

1. 对于**侦听器协议**，选择 **HTTPS**。
**重要**  
默认情况下，**实例协议**为 HTTP。如果要设置后端实例身份验证，请将**实例协议**更改为 HTTPS。

1. 对于**安全策略**，建议您使用最新的预定义安全策略。如果您需要使用其他预定义安全策略或创建自定义策略，请参阅[更新 SSL 协商配置](ssl-config-update.md#ssl-config-update-console)。

1. 对于**默认 SSL 证书**，请选择**编辑**，然后执行以下操作之一：
   + 如果您使用创建或导入了证书 AWS Certificate Manager，请选择 F **rom ACM**，从列表中选择证书，然后选择**保存更改**。
**注意**  
此选项只在支持 的区域中可用 AWS Certificate Manager
   + 如果使用 IAM 导入了证书，请选择**从 IAM** 并从列表中选择该证书，然后选择**保存更改**。
   + 如果您有 SSL 证书要导入到 ACM，请选择**导入**和**到 ACM**。在**证书私有密钥**中，复制并粘贴 PEM 编码的私有密钥文件的内容。在**证书正文**中，复制并粘贴 PEM 编码的公有密钥证书文件的内容。在**证书链 – 可选**中，复制并粘贴 PEM 编码的证书链文件的内容，除非您使用的是自行签名的证书并且浏览器是否隐式接受证书并不重要。
   + 如果您有要导入的 SSL 证书，但该区域不支持 ACM，请选择**导入**和**到 IAM**。在**证书名称**字段中输入证书的名称。在**证书私有密钥**中，复制并粘贴 PEM 编码的私有密钥文件的内容。在**证书正文**中，复制并粘贴 PEM 编码的公有密钥证书文件的内容。在**证书链 – 可选**中，复制并粘贴 PEM 编码的证书链文件的内容，除非您使用的是自行签名的证书并且浏览器是否隐式接受证书并不重要。
   + 选择**保存更改**。

1. 对于 **Cookie 粘性**，默认设置为**已禁用**。要更改此设置，请选择**编辑**。如果选择**由负载均衡器生成**，则必须指定一个**有效期**。如果选择**由应用程序生成**，则必须指定一个 **Cookie 名称**。完成选择后，选择**保存更改**。

1. （可选）选择**添加侦听器**以添加其他侦听器。

1. 选择**保存更改**以添加您刚才配置的侦听器。

1. （可选）要为现有负载均衡器设置后端实例身份验证，必须使用 AWS CLI 或 API，因为控制台不支持此任务。有关更多信息，请参阅[配置后端实例身份验证](elb-create-https-ssl-load-balancer.md#configure_backendauth_clt)。

## 使用添加 HTTPS 监听器 AWS CLI
<a name="add-listener-cli"></a>

您可以将 HTTPS 监听器添加到现有负载均衡器。

**要向您的负载均衡器添加 HTTPS 侦听器，请使用 AWS CLI**

1. 获取 SSL 证书的 Amazon Resource Name (ARN)。例如：

   **ACM**

   ```
   arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012
   ```

   **IAM**

   ```
   arn:aws:iam::123456789012:server-certificate/my-server-certificate
   ```

1. 使用以下[create-load-balancer-listeners](https://docs.aws.amazon.com/cli/latest/reference/elb/create-load-balancer-listeners.html)命令向您的负载均衡器添加侦听器，该侦听器在端口 443 上接受 HTTPS 请求，并使用 HTTP 将请求发送到端口 80 上的实例：

   ```
   aws elb create-load-balancer-listeners --load-balancer-name my-load-balancer --listeners Protocol=HTTPS,LoadBalancerPort=443,InstanceProtocol=HTTP,InstancePort=80,SSLCertificateId=ARN
   ```

   如果要设置后端实例身份验证，请使用以下命令添加一个侦听器，此侦听器接受端口 443 上的 HTTPS 请求并使用 HTTPS 将请求发送到端口 443 上的实例：

   ```
   aws elb create-load-balancer-listeners --load-balancer-name my-load-balancer --listeners Protocol=HTTPS,LoadBalancerPort=443,InstanceProtocol=HTTPS,InstancePort=443,SSLCertificateId=ARN
   ```

1. （可选）您可以使用以下[describe-load-balancers](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancers.html)命令查看负载均衡器的更新详细信息：

   ```
   aws elb describe-load-balancers --load-balancer-name my-load-balancer
   ```

   以下为响应示例：

   ```
   {
       "LoadBalancerDescriptions": [
           {
               ...
               "ListenerDescriptions": [
                   {
                       "Listener": {
                           "InstancePort": 80, 
                           "SSLCertificateId": "ARN", 
                           "LoadBalancerPort": 443, 
                           "Protocol": "HTTPS", 
                           "InstanceProtocol": "HTTP"
                       }, 
                       "PolicyNames": [
                           "ELBSecurityPolicy-2016-08"
                       ]
                   }, 
                   {
                       "Listener": {
                           "InstancePort": 80, 
                           "LoadBalancerPort": 80, 
                           "Protocol": "HTTP", 
                           "InstanceProtocol": "HTTP"
                       }, 
                       "PolicyNames": []
                   }
               ], 
               ...
           }
       ]
   }
   ```

1. (可选) 您的 HTTPS 侦听器是使用默认安全策略创建的。如果要指定不同的预定义安全策略或自定义安全策略，请使用[create-load-balancer-policy](https://docs.aws.amazon.com/cli/latest/reference/elb/create-load-balancer-policy.html)和 [set-load-balancer-policiesof-listener](https://docs.aws.amazon.com/cli/latest/reference/elb/set-load-balancer-policies-of-listener.html) 命令。有关更多信息，请参阅 [使用更新 SSL 协商配置 AWS CLI](ssl-config-update.md#ssl-config-update-cli)。

1. （可选）要设置后端实例身份验证，请使用 [set-load-balancer-policies-for-backend-server](https://docs.aws.amazon.com/cli/latest/reference/elb/set-load-balancer-policies-for-backend-server.html) 命令。有关更多信息，请参阅[配置后端实例身份验证](elb-create-https-ssl-load-balancer.md#configure_backendauth_clt)。

# 替换经典负载均衡器的 SSL 证书
<a name="elb-update-ssl-cert"></a>

如果您有 HTTPS 侦听器，在创建侦听器时已在负载均衡器上部署了 SSL 服务器证书。每个证书都有有效期限。您必须确保在其有效期限结束前续订或替换证书。

由您的负载均衡器提供 AWS Certificate Manager 并部署在您的负载均衡器上的证书可以自动续订。ACM 会尝试在到期之前续订证书。有关更多信息，请参阅 *AWS Certificate Manager 用户指南*中的[托管续订](https://docs.aws.amazon.com/acm/latest/userguide/managed-renewal.html)。如果您将证书导入 ACM，则必须监视证书的到期日期并在到期前续订。有关更多信息，请参阅 *AWS Certificate Manager 用户指南*中的[导入证书](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html)。续订部署在负载均衡器上的证书之后，新请求使用续订的证书。

要替换证书，您必须先按照在首次创建当前证书时使用的相同步骤操作来创建新证书。然后，您可以替换该证书。替换部署在负载均衡器上的证书之后，新请求使用新的证书。

请注意，续订或替换证书不影响负载均衡器节点已收到的请求，并暂停指向正常运行的目标的路由。

**Topics**
+ [

## 使用控制台替换 SSL 证书
](#us-update-lb-SSLcert-console)
+ [

## 使用替换 SSL 证书 AWS CLI
](#us-update-lb-SSLcert-cli)

## 使用控制台替换 SSL 证书
<a name="us-update-lb-SSLcert-console"></a>

您可以使用 ACM 提供的证书或上传到 IAM 的证书替换负载均衡器上部署的证书。

**使用控制台替换 HTTPS 负载均衡器的 SSL 证书**

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon EC2 控制台。

1. 在导航窗格上的 **Load Balancing**（负载均衡）下，选择 **Load Balancers**（负载均衡器）。

1. 选择负载均衡器的名称以打开其详细信息页面。

1. 在**侦听器**选项卡上，选择**管理侦听器**。

1. 在**管理侦听器**页面上，找到要更新的侦听器，再选择**默认 SSL 证书**下的**编辑**，然后执行以下操作之一：
   + 如果您使用创建或导入了证书 AWS Certificate Manager，请选择 F **rom ACM**，从列表中选择证书，然后选择**保存更改**。
**注意**  
此选项只在支持 的区域中可用 AWS Certificate Manager
   + 如果使用 IAM 导入了证书，请选择**从 IAM** 并从列表中选择该证书，然后选择**保存更改**。
   + 如果您有 SSL 证书要导入到 ACM，请选择**导入**和**到 ACM**。在**证书私有密钥**中，复制并粘贴 PEM 编码的私有密钥文件的内容。在**证书正文**中，复制并粘贴 PEM 编码的公有密钥证书文件的内容。在**证书链 – 可选**中，复制并粘贴 PEM 编码的证书链文件的内容，除非您使用的是自行签名的证书并且浏览器是否隐式接受证书并不重要。
   + 如果您有要导入的 SSL 证书，但该区域不支持 ACM，请选择**导入**和**到 IAM**。在**证书名称**字段中输入证书的名称。在**证书私有密钥**中，复制并粘贴 PEM 编码的私有密钥文件的内容。在**证书正文**中，复制并粘贴 PEM 编码的公有密钥证书文件的内容。在**证书链 – 可选**中，复制并粘贴 PEM 编码的证书链文件的内容，除非您使用的是自行签名的证书并且浏览器是否隐式接受证书并不重要。
   + 选择**保存更改**。

## 使用替换 SSL 证书 AWS CLI
<a name="us-update-lb-SSLcert-cli"></a>

您可以使用 ACM 提供的证书或上传到 IAM 的证书替换负载均衡器上部署的证书。

**使用 ACM 提供的证书替换 SSL 证书**

1. 使用以下 [request-certificate](https://docs.aws.amazon.com/cli/latest/reference/acm/request-certificate.html) 命令请求新的证书：

   ```
   aws acm request-certificate --domain-name www.example.com
   ```

1. 使用以下 [set-load-balancer-listener-ssl-certificate 命令设置证书](https://docs.aws.amazon.com/cli/latest/reference/elb/set-load-balancer-listener-ssl-certificate.html)：

   ```
   aws elb set-load-balancer-listener-ssl-certificate --load-balancer-name my-load-balancer --load-balancer-port 443 --ssl-certificate-id arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012
   ```

**使用已上传到 IAM 的证书替换 SSL 证书**

1. 如果您有未上传的 SSL 证书，请参阅 *IAM 用户指南*中的[上传服务器证书](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html#upload-server-certificate)。

1. 使用以下[get-server-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/get-server-certificate.html)命令获取证书的 ARN：

   ```
   aws iam get-server-certificate --server-certificate-name my-new-certificate
   ```

1. 使用以下 [set-load-balancer-listener-ssl-certificate 命令设置证书](https://docs.aws.amazon.com/cli/latest/reference/elb/set-load-balancer-listener-ssl-certificate.html)：

   ```
   aws elb set-load-balancer-listener-ssl-certificate --load-balancer-name my-load-balancer --load-balancer-port 443 --ssl-certificate-id arn:aws:iam::123456789012:server-certificate/my-new-certificate
   ```

# 更新经典负载均衡器的 SSL 协商配置
<a name="ssl-config-update"></a>

经典负载均衡器提供了具有预定义 SSL 协商配置的安全策略，可使用这些配置协商客户端与负载均衡器之间的 SSL 连接。如果您为侦听器使用 HTTPS/SSL 协议，则可以使用预定义的安全策略之一，也可以使用自己的自定义安全策略。

有关安全策略的更多信息，请参阅[经典负载均衡器的 SSL 协商配置](elb-ssl-security-policy.md)。如需了解 Elastic Load Balancing 提供的安全策略的配置，请参阅[经典负载均衡器的预定义 SSL 安全策略](elb-security-policy-table.md)。

如果您在不关联安全策略的情况下创建 HTTPS/SSL 侦听器，Elastic Load Balancing 会将默认的预定义安全策略与您的负载均衡器关联起来。`ELBSecurityPolicy-2016-08`

如果您愿意，可创建一个自定义配置。强烈建议您先测试安全策略，然后再升级负载均衡器配置。

以下示例说明如何更新 HTTPS/SSL 监听器的 SSL 协商配置。请注意，更改不影响由负载均衡器节点接收并等待路由到运行正常的实例的请求，但是更新的配置将用于接收的新请求。

**Topics**
+ [

## 使用控制台更新 SSL 协商配置
](#ssl-config-update-console)
+ [

## 使用更新 SSL 协商配置 AWS CLI
](#ssl-config-update-cli)

## 使用控制台更新 SSL 协商配置
<a name="ssl-config-update-console"></a>

默认情况下，Elastic Load Balancing 将最新的预定义策略与您的负载均衡器关联。添加新的预定义策略后，建议您将负载均衡器更新为使用新的预定义策略。或者，您也可以选择其他预定义安全策略或创建自定义策略。

**使用控制台更新 HTTPS/SSL 负载均衡器的 SSL 协商配置**

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon EC2 控制台。

1. 在导航窗格上的 **Load Balancing**（负载均衡）下，选择 **Load Balancers**（负载均衡器）。

1. 选择负载均衡器的名称以打开其详细信息页面。

1. 在**侦听器**选项卡上，选择**管理侦听器**。

1. 在**管理侦听器**页面上，找到要更新的侦听器，选择**安全策略**下的**编辑**，然后使用下面的任意一种选项选择安全策略：
   + 保留默认策略 P **ELBSecurityolicy-2016-08**，然后选择**保存**更改。
   + 选择除默认策略以外的预定义策略，然后选择**保存更改**。
   + 选择**自定义**，然后至少启用一项协议和一个密码，如下所示：

     1. 对于 **SSL Protocols**，选择要启用的一个或多个协议。

     1. 对于 **SSL 选项**，选择**服务器顺序首选项**，以便对 SSL 协商使用[经典负载均衡器的预定义 SSL 安全策略](elb-security-policy-table.md)中列出的顺序。

     1. 对于 **SSL Ciphers**，选择要启用的一个或多个密码。如果您已有一个 SSL 证书，则必须启用用于创建该证书的密码，因为 DSA 和 RSA 密码特定于签名算法。

     1. 选择**保存更改**。

## 使用更新 SSL 协商配置 AWS CLI
<a name="ssl-config-update-cli"></a>

您可使用默认预定义安全策略 `ELBSecurityPolicy-2016-08`、其他预定义安全策略或自定义安全策略。

**使用预定义 SSL 安全策略**

1. 使用以下[describe-load-balancer-policies](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancer-policies.html)命令列出 Elastic Load Balancing 提供的预定义安全策略。您可以使用的语法取决于您使用的操作系统和 Shell。

   **Linux**

   ```
   aws elb describe-load-balancer-policies --query 'PolicyDescriptions[?PolicyTypeName==`SSLNegotiationPolicyType`].{PolicyName:PolicyName}' --output table
   ```

   **Windows**

   ```
   aws elb describe-load-balancer-policies --query "PolicyDescriptions[?PolicyTypeName==`SSLNegotiationPolicyType`].{PolicyName:PolicyName}" --output table
   ```

   下面是示例输出：

   ```
   ------------------------------------------
   |      DescribeLoadBalancerPolicies      |
   +----------------------------------------+
   |               PolicyName               |
   +----------------------------------------+
   |  ELBSecurityPolicy-2016-08             |
   |  ELBSecurityPolicy-TLS-1-2-2017-01     |
   |  ELBSecurityPolicy-TLS-1-1-2017-01     |
   |  ELBSecurityPolicy-2015-05             |
   |  ELBSecurityPolicy-2015-03             |
   |  ELBSecurityPolicy-2015-02             |
   |  ELBSecurityPolicy-2014-10             |
   |  ELBSecurityPolicy-2014-01             |
   |  ELBSecurityPolicy-2011-08             |
   |  ELBSample-ELBDefaultCipherPolicy      |
   |  ELBSample-OpenSSLDefaultCipherPolicy  |
   +----------------------------------------+
   ```

   若要确定为策略启用的密码，请使用以下命令：

   ```
   aws elb describe-load-balancer-policies --policy-names ELBSecurityPolicy-2016-08 --output table
   ```

   有关预定义安全策略的配置的信息，请参阅[经典负载均衡器的预定义 SSL 安全策略](elb-security-policy-table.md)。

1. 使用[create-load-balancer-policy](https://docs.aws.amazon.com/cli/latest/reference/elb/create-load-balancer-policy.html)命令使用您在上一步中描述的预定义安全策略之一创建 SSL 协商策略。例如，以下命令使用默认预定义安全策略：

   ```
   aws elb create-load-balancer-policy --load-balancer-name my-loadbalancer
   --policy-name my-SSLNegotiation-policy  --policy-type-name SSLNegotiationPolicyType
   --policy-attributes AttributeName=Reference-Security-Policy,AttributeValue=ELBSecurityPolicy-2016-08
   ```

   如果您超出了负载均衡器策略数量的限制，请使用[delete-load-balancer-policy](https://docs.aws.amazon.com/cli/latest/reference/elb/delete-load-balancer-policy.html)命令删除所有未使用的策略。

1. （可选）使用以下[describe-load-balancer-policies](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancer-policies.html)命令验证策略是否已创建：

   ```
   aws elb describe-load-balancer-policies --load-balancer-name my-loadbalancer --policy-name my-SSLNegotiation-policy
   ```

   响应包括策略的描述。

1. 使用以下 [set-load-balancer-policiesof-listener](https://docs.aws.amazon.com/cli/latest/reference/elb/set-load-balancer-policies-of-listener.html) 命令在负载均衡器端口 443 上启用该策略：

   ```
   aws elb set-load-balancer-policies-of-listener --load-balancer-name my-loadbalancer --load-balancer-port 443 --policy-names my-SSLNegotiation-policy
   ```
**注意**  
`set-load-balancer-policies-of-listener` 命令将指定负载均衡器端口的当前策略集替换为指定的策略集。`--policy-names` 列表必须包括要启用的所有策略。如果您省略当前已启用的策略，则禁用此策略。

1. （可选）使用以下[describe-load-balancers](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancers.html)命令验证是否已为负载平衡器端口启用新策略：

   ```
   aws elb describe-load-balancers --load-balancer-name my-loadbalancer
   ```

   响应表明已在端口 443 上启用该策略。

   ```
   ...
     {
         "Listener": {
             "InstancePort": 443,
             "SSLCertificateId": "ARN",
             "LoadBalancerPort": 443,
             "Protocol": "HTTPS",
             "InstanceProtocol": "HTTPS"
         },
         "PolicyNames": [
             "my-SSLNegotiation-policy"
         ]
     }
   ...
   ```

当您创建自定义安全策略时，必须至少启用一项协议和一个密码。DSA 和 RSA 密码特定于签名算法，用于创建 SSL 证书。如果您已有一个 SSL 证书，请确保启用用于创建该证书的密码。您的自定义策略的名称不得以 `ELBSecurityPolicy-` 或 `ELBSample-` 开头，因为这些前缀是为预定义安全策略的名称保留的。

**使用自定义 SSL 安全策略**

1. 使用[create-load-balancer-policy](https://docs.aws.amazon.com/cli/latest/reference/elb/create-load-balancer-policy.html)命令使用自定义安全策略创建 SSL 协商策略。例如：

   ```
   aws elb create-load-balancer-policy --load-balancer-name my-loadbalancer 
    --policy-name my-SSLNegotiation-policy --policy-type-name SSLNegotiationPolicyType 
    --policy-attributes AttributeName=Protocol-TLSv1.2,AttributeValue=true 
    AttributeName=Protocol-TLSv1.1,AttributeValue=true 
    AttributeName=DHE-RSA-AES256-SHA256,AttributeValue=true 
    AttributeName=Server-Defined-Cipher-Order,AttributeValue=true
   ```

   如果您超出了负载均衡器策略数量的限制，请使用[delete-load-balancer-policy](https://docs.aws.amazon.com/cli/latest/reference/elb/delete-load-balancer-policy.html)命令删除所有未使用的策略。

1. （可选）使用以下[describe-load-balancer-policies](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancer-policies.html)命令验证策略是否已创建：

   ```
   aws elb describe-load-balancer-policies --load-balancer-name my-loadbalancer --policy-name my-SSLNegotiation-policy
   ```

   响应包括策略的描述。

1. 使用以下 [set-load-balancer-policiesof-listener](https://docs.aws.amazon.com/cli/latest/reference/elb/set-load-balancer-policies-of-listener.html) 命令在负载均衡器端口 443 上启用该策略：

   ```
   aws elb set-load-balancer-policies-of-listener --load-balancer-name my-loadbalancer --load-balancer-port 443 --policy-names my-SSLNegotiation-policy
   ```
**注意**  
`set-load-balancer-policies-of-listener` 命令将指定负载均衡器端口的当前策略集替换为指定的策略集。`--policy-names` 列表必须包括要启用的所有策略。如果您省略当前已启用的策略，则禁用此策略。

1. （可选）使用以下[describe-load-balancers](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancers.html)命令验证是否已为负载平衡器端口启用新策略：

   ```
   aws elb describe-load-balancers --load-balancer-name my-loadbalancer
   ```

   响应表明已在端口 443 上启用该策略。

   ```
   ...
     {
         "Listener": {
             "InstancePort": 443,
             "SSLCertificateId": "ARN",
             "LoadBalancerPort": 443,
             "Protocol": "HTTPS",
             "InstanceProtocol": "HTTPS"
         },
         "PolicyNames": [
             "my-SSLNegotiation-policy"
         ]
     }
   ...
   ```