我正在尝试在正在运行django应用程序的EB实例上设置https,它目前可与http一起使用,但与https一起超时。我经历了我认为需要做的每一个步骤:
创建名称为域(myapp123.vdfb.eu-central-1.elasticbeanstalk.com)的自签名证书,并将其上传到证书管理器
还在django应用程序的我的设置文件中添加了以下几行:
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
所有这些之后,当我尝试使用https://...
访问它时,它仍然无法解析。
我想念什么?
答案 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