Elastic Beanstalk实例未使用https响应

时间:2018-07-29 14:02:53

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

我正在尝试在正在运行django应用程序的EB实例上设置https,它目前可与http一起使用,但与https一起超时。我经历了我认为需要做的每一个步骤:

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

  2. 在负载均衡器上设置端口443: enter image description here

  3. 在已添加到ec2实例的安全组上添加规则: enter image description here

  4. 还向负载均衡器上添加的安全组添加规​​则: enter image description here

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

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

所有这些之后,当我尝试使用https://...访问它时,它仍然无法解析。 我想念什么?

3 个答案:

答案 0 :(得分:3)

根据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

答案 1 :(得分:0)

如果您有自己的域来将HTTPS分配给https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https.html上的说明,则此过程会容易得多

但是,继续在myapp123.vdfb.eu-central-1.elasticbeanstalk.com上,执行以下步骤,尽管我不知道它们在您使用的AWS区域中是否可用。

elasticbeanstalk ssl without custom domain https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https-ssl.html https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https-ssl-upload.html https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https-elb.html

答案 2 :(得分:0)

您可能需要在Load Balancer仪表板中更新AWS Certificate Manager的ARN。在第一个图中,我看到有EB URL而不是证书。

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

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