弹性负载均衡器和https

时间:2014-02-16 16:54:13

标签: java tomcat ssl amazon-web-services amazon-ec2

我正在使用Elastic Beanstalk并且在使用SSL配置时遇到了一些问题。

我现在有一个由Load Balancer和一个EC2实例组成的环境。负载均衡器在端口443和80上有侦听器。环境中的EC2实例在端口80上运行tomcat。我在负载均衡器中有一个证书,我可以在端口443和80上访问该站点,一切都是工作得很好。

问题在于我希望将所有请求重定向到端口443,即使是端口80上的请求。我已经搜索了高低,以便在不必更改安全配置的情况下执行此操作。这是一个运行在Tomcat 7上的小型webapp,带有Spring安全性和MVC。我尝试使用

<sec:intercept-url pattern="/**" requires-channel="https"/>

但我有几个页面不属于过滤器链

<sec:http pattern="/login.html" security="none"  />

这似乎可以在负载均衡器上解决,但我没有太多设置SSL的经验。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

您的ELB接受443和80上的连接,但它终止了那里的SSL并仅在80上联系您的代码.SSL基本上是从浏览器到ELB。 ELB在Beanstalk上的后端代码总是在80上。

因此,任何期望基于传入协议匹配的规则都不起作用。相反,您应该使用此标题“X-Forwarded-Proto:”(将由ELB设置),然后执行转发规则。