AWS Elastic Beanstalk VPC - 从ELB到实例的HTTPS

时间:2016-08-07 03:50:24

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

我试图找出管理EB docker应用程序的HTTPS的最佳方法。

目前我正在使用以下方法。

  1. ELB接受443上的HTTPS连接,并转发到实例上的HTTP端口80。
  2. ELB接受80上的HTTP连接,并转发到实例上的HTTP端口8080。
  3. Instance接受端口80上的HTTP连接并转发到docker app。
  4. Instance接受端口8080上的HTTP连接,并将它们重定向到HTTPS。
  5. 这一切都运作得相当好。这意味着docker应用程序根本不必担心重定向。它只是听80端口,并做了它的事情。剩下的就是ELB和docker主机。

    我唯一担心的是这个设置,码头工具应用程序并不知道它运行安全。如果在我的申请中我检查了这一点,它就会失败。

    我想将我的docker app与域名以及可能更改的SSL证书完全分开,因此我希望继续在ELB处终止原始HTTPS连接。我想知道是否有某种方法可以让docker主机(或ELB)在HTTPS协议中转发(重新加密)请求,但是使用自签名证书,所以我可以保持它完全通用。 / p>

    为了清楚起见,这只能在ELB和/或泊坞主机和我的docker应用之间,而不是浏览器。

    如果我创建一个非过期的自签名证书,然后将其注册到docker app中的web服务器(当前使用Apache2,但可能使用nginx),然后只需告诉ELB或docker host将请求转发为HTTPS,这会有效吗?或者它会在某些时候失败,因为证书不受信任?

    或者是否有某种方法能够在docker app web-server上终止HTTPS连接,而无需实际需要预先生成证书(我猜不到这个,可能是因为它' d需要动态生成证书或其他东西)。

    有没有推荐的最佳做法来做这种事情?

1 个答案:

答案 0 :(得分:0)

当负载均衡器终止客户端连接并转发到后端时,通常的解决方案是负载均衡器将后端添加标头请求以填充因负载均衡器而剥离的任何信息。

ELB has a page on this并使用以下标题:

  • GET http://http://192.168.199.128/trobay/products/sell/updatecategory?draftId=20&catid=50 - 客户端IP
  • X-Forwarded-For - 计划/协议
  • X-Forwarded-Proto - 传入端口。

您通常不会直接从客户端允许这些标头,除非它们是受信任的客户端。我假设ELB为你照顾。