【问题标题】:Elastic Beanstalk instance not responding with httpsElastic Beanstalk 实例未使用 https 响应
【发布时间】:2019-01-05 22:38:46
【问题描述】:

我正在尝试在我的 EB 实例上设置 https,它正在运行 django 应用程序,它目前可以使用 http,但使用 https 会超时。我已经完成了我认为需要的每一步:

  1. 创建了名称为域的自签名证书 (myapp123.vdfb.eu-central-1.elasticbeanstalk.com) 并将其上传到证书管理器

  2. 在负载均衡器上设置端口 443:

  3. 在附加到 ec2 实例的安全组上添加规则:

  4. 还在附加到负载均衡器的安全组上添加规则:

  5. 还在我的 django 应用程序的设置文件中添加了这些行:

    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
    SESSION_COOKIE_SECURE = True
    CSRF_COOKIE_SECURE = True
    

在这一切之后,当我尝试使用https://... 访问它时,它仍然无法解决。 我错过了什么?

【问题讨论】:

    标签: django amazon-web-services ssl amazon-ec2 https


    【解决方案1】:

    根据 EB 堆栈,激活 TLS 并不意味着它也在后端被激活。你有两个选择:

    在负载均衡器处终止

    User Agent <-- HTTPS --> Elastic Load Balancer <-- Plain HTTP --> Backend

    只需将“实例协议”设置从 HTTPS 更改为 HTTP。这会终止负载均衡器上的 TLS 连接,并与后端实例进行未加密的 HTTP 通信。如果这符合您的安全需求,那将是最简单、最快捷的解决方案,因为您无需调整您的应用程序。

    在后端实例终止

    User Agent <-- HTTPS --> Elastic Load Balancer <-- HTTPS --> Backend

    在这种情况下,您必须在应用程序堆栈中提供 HTTPS 侦听器。该堆栈部分由 AWS 提供,并且取决于您的部署平台,因此我想将您转发到官方文档,因为它们包含最佳实践:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/https-singleinstance-python.html

    【讨论】:

    • 在负载均衡器上从 HTTPS 更改为 HTTP 后端是一个很好的解决方案,对我来说,谢谢!
    【解决方案2】:

    【讨论】:

      【解决方案3】:

      您可能需要在负载均衡器控制面板中更新 AWS 证书管理器的 ARN。从第一张图中,我看到有 EB URL 而不是证书。

      以下链接可能对您有所帮助

      https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-update-ssl-cert.html

      【讨论】:

      • 我上周创建了证书,你建议我替换它吗?链接提到如果验证期结束我应该更换它,但事实并非如此!
      猜你喜欢
      • 2016-03-11
      • 2016-12-13
      • 2018-08-14
      • 2020-11-09
      • 2019-02-05
      • 2018-08-14
      • 2020-10-01
      • 2018-08-09
      • 1970-01-01
      相关资源
      最近更新 更多