使用Elastic Beanstalk应用程序启用HTTPS和HTTP

时间:2018-11-14 11:58:03

标签: amazon-web-services https amazon-elastic-beanstalk

我们正在尝试建立对使用Elastic Beanstalk部署的网站的HTTPS访问。

这是我们已采取的步骤:

  1. 从Amazon Certificate Manager获得了证书。

  2. 在我们的EB应用程序环境中的“配置”下,我们向Classic Load Balancer添加了另一个侦听器。此新侦听器的设置是:

    Port: 443  
    Protocol: HTTPS  
    Instance Port: 443  
    Instance Protocol: HTTPS  
    SSL certificate: (certificate that we created in step 1)  
    
  3. 由于添加了此新的侦听器,因此创建了另一个具有443入站规则的安全组,因此该安全组已添加到实例。

  4. 最后,我们转到“负载平衡器”页面,对于此应用程序的负载平衡器,我们添加了具有以下设置的另一个侦听器:

    Load Balancer Protocol: HTTPS  
    Load Balancer Port: 443  
    Instance Protocol: HTTPS  
    Instance Port: 443  
    Cipher: ELBSecurityPolicy-2016-08 (default)  
    SSL Certificate: (certificate that we created in step 1)  
    

但是我们仍然无法通过https访问我们的网站。您知道还需要做什么吗?

另一点。在第4步中,如果只有443个负载均衡器端口存在以下设置:

HTTPS 443 HTTP 80 (cert)

然后,只能通过 https(而非http)访问该网站。

因此,此调整表明证书没有问题。

我们的配置中缺少什么?

1 个答案:

答案 0 :(得分:1)

如果在EB设置中将证书分配给侦听器,则默认情况下会将其分配给负载均衡器。负载平衡器终止来自Internet和communicates with the instances using HTTP(不加密)的HTTPS连接。因此,您需要从负载均衡器打开未加密到实例的端口80。

如果实例必须具有end-to-end encryption,则需要配置EB环境以直接通过负载均衡器传递HTTPS:

.ebextensions / https-reencrypt-clb.config

  

将此配置文件与经典负载均衡器一起使用。此外   要配置负载均衡器,配置文件也会更改   默认的运行状况检查以使用端口443和HTTPS,以确保   负载均衡器可以安全连接。

option_settings:
  aws:elb:listener:443:
    InstancePort: 443
    InstanceProtocol: HTTPS
  aws:elasticbeanstalk:application:
    Application Healthcheck URL: HTTPS:443/

为您的实例更新Security Group config

.ebextensions / https-instance-securitygroup.config

Resources:
  sslSecurityGroupIngress: 
    Type: AWS::EC2::SecurityGroupIngress
    Properties:
      GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
      IpProtocol: tcp
      ToPort: 443
      FromPort: 443
      CidrIp: 0.0.0.0/0

并在实例上配置证书,该证书可以是自签名证书:

.ebextensions / https-backendauth.config

option_settings:
  # Backend Encryption Policy
  aws:elb:policies:backendencryption:
    PublicKeyPolicyNames: backendkey
    InstancePorts:  443
  # Public Key Policy
  aws:elb:policies:backendkey:
    PublicKey: |
      -----BEGIN CERTIFICATE-----
      ################################################################
      ################################################################
      ################################################################
      ################################################################
      ################################################
      -----END CERTIFICATE-----

查看更详细的摘要,其中包含适用于不同类型的负载均衡器here的选项。