

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

# 在负载均衡器上配置 HTTPS 终止
<a name="configuring-https-elb"></a>

要更新您的 AWS Elastic Beanstalk 环境以使用 HTTPS，您需要为环境中的负载均衡器配置 HTTPS 侦听器。两种类型的负载均衡器支持 HTTPS 侦听器：经典负载均衡器和 Application Load Balancer。

您可以使用 Elastic Beanstalk 控制台或配置文件配置安全侦听器和分配证书。

**注意**  
单实例环境没有负载均衡器并且不支持负载均衡器上的 HTTPS 终止。

## 使用 Elastic Beanstalk 控制台配置安全侦听器
<a name="configuring-https-elb.console"></a>

**将证书分配至环境的负载均衡器**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 在导航窗格中，选择 **Configuration**（配置）。

1. 在 **Load balancer (负载均衡器)** 配置类别中，选择 **Edit (编辑)**。
**注意**  
如果 **Load balancer (负载均衡器)** 配置类别没有 **Edit (编辑)** 按钮，则表示您的环境没有[负载均衡器](using-features-managing-env-types.md#using-features.managing.changetype)。

1. 在**修改负载均衡器**页上，根据与您的环境关联的负载均衡器类型，该过程将会有所不同。
   + **经典负载均衡器**

     1. 选择**添加侦听器**。

     1. 在 **经典负载均衡器 listener (经典负载均衡器侦听器)** 对话框中，配置以下设置：
        + 对于**侦听器端口**，请键入传入流量端口，通常为 `443`。
        + 对于**侦听器协议**，选择 **HTTPS**。
        + 对于**实例端口**，请键入 `80`。
        + 对于**实例协议**，选择 **HTTP**。
        + 对于 **SSL 证书**，选择您的证书。

     1. 选择**添加**。
   + **应用程序负载均衡器**

     1. 选择**添加侦听器**。

     1. 在 **Application Load Balancer listener (Application Load Balancer 侦听器)** 对话框中，配置以下设置：
        + 对于**端口**，请键入传入流量端口，通常为 `443`。
        + 对于**协议**，选择 **HTTPS**。
        + 对于 **SSL 证书**，选择您的证书。

     1. 选择**添加**。
**注意**  
对于经典负载均衡器和应用程序负载均衡器，如果下拉菜单中未显示任何证书，您应在 [AWS Certificate Manager (ACM)](https://docs.aws.amazon.com/acm/latest/userguide/) 中为您的[自定义域名](customdomains.md)创建或上传证书（首选）。或者，使用 AWS CLI将证书上传到 IAM。
   + **Network Load Balancer**

     1. 选择**添加侦听器**。

     1. 在 **Network Load Balancer listener (Network Load Balancer 侦听器)** 对话框中，对于 **Port (端口)**，请键入传入流量端口，通常为 `443`。

     1. 选择**添加**。

1. 要保存更改，请选择页面底部的 **Apply**（应用）。

## 使用配置文件配置安全侦听器
<a name="configuring-https-elb.configurationfile"></a>

您可以使用以下[配置文件](ebextensions.md)之一在负载均衡器上配置安全侦听器。

**Example .ebextensions/securelistener-clb.config**  
当您的环境具有经典负载均衡器时，请使用此示例。该示例使用 `aws:elb:listener` 命名空间中的选项通过指定的证书在端口 443 上配置 HTTPS 侦听器，并将解密的流量转发到端口 80 上的环境实例。  

```
option_settings:
  aws:elb:listener:443:
    SSLCertificateId: arn:aws:acm:us-east-2:1234567890123:certificate/####################################
    ListenerProtocol: HTTPS
    InstancePort: 80
```

将突出显示的文本替换为您的证书的 ARN。该证书可以是您在 AWS Certificate Manager (ACM) 中创建或上传的证书（首选），也可以是您使用上传到 IAM 的 AWS CLI证书。

有关经典负载均衡器配置选项的更多信息，请参阅[经典负载均衡器配置命名空间](environments-cfg-clb.md#environments-cfg-clb-namespace)。

**Example .ebextensions/securelistener-alb.config**  
当您的环境具有 Application Load Balancer 时，请使用此示例。该示例使用 `aws:elbv2:listener` 命名空间中的选项通过指定的证书在端口 443 上配置 HTTPS 侦听器。该侦听器将流量路由到默认进程。  

```
option_settings:
  aws:elbv2:listener:443:
    ListenerEnabled: 'true'
    Protocol: HTTPS
    SSLCertificateArns: arn:aws:acm:us-east-2:1234567890123:certificate/####################################
```

**Example .ebextensions/securelistener-nlb.config**  
当您的环境具有 Network Load Balancer 时，请使用此示例。该示例使用 `aws:elbv2:listener` 命名空间中的选项在端口 443 上配置侦听器。该侦听器将流量路由到默认进程。  

```
option_settings:
  aws:elbv2:listener:443:
    ListenerEnabled: 'true'
```

## 配置安全组
<a name="configuring-https-elb.security-group"></a>

如果将负载均衡器配置为将流量转发到除端口 80 外的实例端口，则必须向安全组添加一个规则来允许来自负载均衡器的入站流量通过该实例端口。如果您在自定义 VPC 中创建环境，则 Elastic Beanstalk 会为您添加此规则。

您可以在 `.ebextensions` 目录的[配置文件](ebextensions.md)中为您的应用程序添加 `Resources` 键，从而添加此规则。

以下示例配置文件添加传入规则到 `AWSEBSecurityGroup` 安全组。这样将允许端口 1000 上来自负载均衡器安全组的流量。

**Example .ebextensions/sg-ingressfromlb.config**  

```
Resources:
  sslSecurityGroupIngress:
    Type: AWS::EC2::SecurityGroupIngress
    Properties:
      GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
      IpProtocol: tcp
      ToPort: 1000
      FromPort: 1000
      SourceSecurityGroupId: {"Fn::GetAtt" : ["AWSEBLoadBalancerSecurityGroup", "GroupId"]}
```