View a markdown version of this page

在负载均衡器上配置 HTTPS 终止 - AWS Elastic Beanstalk

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

在负载均衡器上配置 HTTPS 终止

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

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

注意

Single-instance 环境没有负载均衡器,也不支持在负载均衡器上终止 HTTPS。

使用 Elastic Beanstalk 控制台配置安全侦听器

将证书分配至环境的负载均衡器
  1. 打开 Elastic Beanstalk 控制台,然后在 “区域” 列表中,选择您的。 AWS 区域

  2. 在导航窗格中,选择 Environments(环境),然后从列表中选择环境的名称。

  3. 在导航窗格中,选择 Configuration(配置)。

  4. 在 Load balancer (负载均衡器) 配置类别中,选择 Edit (编辑)。

    注意

    如果 Load balancer (负载均衡器) 配置类别没有 Edit (编辑) 按钮,则表示您的环境没有负载均衡器。

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

    • 经典负载均衡器

      1. 选择添加侦听器。

      2. 在 经典负载均衡器 listener (经典负载均衡器侦听器) 对话框中,配置以下设置:

        • 对于侦听器端口,请键入传入流量端口,通常为 443。

        • 对于侦听器协议,选择 HTTPS。

        • 对于实例端口,请键入 80。

        • 对于实例协议,选择 HTTP。

        • 对于 SSL 证书,选择您的证书。

      3. 选择添加。

    • 应用程序负载均衡器

      1. 选择添加侦听器。

      2. 在 Application Load Balancer listener (Application Load Balancer 侦听器) 对话框中,配置以下设置:

        • 对于端口,请键入传入流量端口,通常为 443。

        • 对于协议,选择 HTTPS。

        • 对于 SSL 证书,选择您的证书。

      3. 选择添加。

      注意

      对于经典负载均衡器和应用程序负载均衡器,如果下拉菜单中未显示任何证书,您应在 AWS Certificate Manager (ACM) 中为您的自定义域名创建或上传证书(首选)。或者,使用 AWS CLI将证书上传到 IAM。

    • Network Load Balancer

      1. 选择添加侦听器。

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

      3. 选择添加。

  6. 要保存更改,请选择页面底部的 Apply(应用)。

使用配置文件配置安全侦听器

您可以使用以下配置文件之一在负载均衡器上配置安全侦听器。

例。 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证书。

有关经典负载均衡器配置选项的更多信息,请参阅经典负载均衡器配置命名空间。

例。 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/####################################
例。 ebextensions/securelistener-nlb.config

当您的环境具有 Network Load Balancer 时,请使用此示例。该示例使用aws:elbv2:listener命名空间中的选项在端口 443 上配置带有 SSL 证书的 TLS 侦听器。监听器处理安全连接并将流量路由到默认进程。

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

配置安全组

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

您可以在 .ebextensions 目录的配置文件中为您的应用程序添加 Resources 键,从而添加此规则。

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

例。 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"]}