使用AWS Load Balancer和tomcat 6实例切换到HTTPS时会话无效

时间:2015-09-17 05:28:15

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

我遇到了SSL,Load Balancer和Tomcat的问题。 我有一个tomcat实例,在8080端口上运行,可以访问并且工作正常。 我的应用程序位于 SPRING 框架上,它会切换到HTTPS以获取某些安全页面[如帐户/结帐等] 在tomcat上运行的安全端口是8443。 对于独立的tomcat服务器,一切都按预期工作,安全和非安全页面之间的切换工作正常。

我的目标:我希望负载均衡器处理所有SSL内容,这样我就不必在各个tomcat服务器上配置SSL。

我的内容:我购买了SSL证书,并在AWS Elastic Load Balancer上配置了证书,并添加了我的tomcat实例。 我的监听器以这种方式配置: - 1. HTTP 80 - > HTTP 8080 2. HTTPS 443 - > HTTP 8443 [在此处将SSL证书添加到负载均衡器]

TOMCAT 8080端口配置

 <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

现在,我可以使用负载均衡器访问我的应用程序。

问题: 当我转到安全页面时,应用程序无法按预期运行。我已经尝试了下面的tomcat配置,我可以访问安全页面,但会话变得无效。 关于我在这里缺少什么的任何指示?

<Connector
port="8443"
sslProtocol="HTTP/1.1"
scheme="https"
secure="true"
connectionTimeout="20000"
URIEncoding="UTF-8"
proxyPort="443"
/>

1 个答案:

答案 0 :(得分:0)

找到解决方案。在我的server.xml中添加了以下内容

非SSL端口

<Connector 
port="8080"
connectionTimeout="20000"
redirectPort="443" 
proxyPort="80"
proxyName="<my-website-url>" /> 

SSL端口

<Connector
port="8443"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol="TLS"
connectionTimeout="20000"
URIEncoding="UTF-8"
proxyName="<my-website-name>
proxyPort="443"
 />