【问题标题】:Enabling HTTPS and HTTP with Elastic Beanstalk application使用 Elastic Beanstalk 应用程序启用 HTTPS 和 HTTP
【发布时间】:2019-04-17 09:23:15
【问题描述】:

我们正在尝试设置对使用 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 访问。

所以这个调整表明证书没有问题。

我们的配置中缺少什么?

【问题讨论】:

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


    【解决方案1】:

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

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

    .ebextensions/https-reencrypt-clb.config

    将此配置文件与 Classic Load Balancer 一起使用。此外 为了配置负载均衡器,配置文件也发生了变化 默认健康检查使用端口 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

    【讨论】:

    • 该死的beantalk真的是很棒的抽象层:D只需点击几下即可部署您的应用程序:D
    猜你喜欢
    • 2017-11-26
    • 2021-01-02
    • 2023-03-09
    • 1970-01-01
    • 2018-03-18
    • 2020-11-09
    • 2020-01-14
    • 2015-11-08
    • 2013-10-21
    相关资源
    最近更新 更多