

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

# 创建带有 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) 命令。