我们的团队从供应商那里继承了一个Web应用程序。 Web应用程序在Tomcat 7.0.41(现在带有OpenJDK 1.6)上运行。我查看了Tomcat服务器xml,并且Connector配置如下。问题是为什么SSLEnabled设置为false,方案为https,secure = true。 TC文档说SSLEnabled通常应该是“真实的”,方案和安全设置如此。另外(重要的)TC服务器位于负载均衡器后面。该应用程序看起来很好。我应该将SSLEnabled更改为true吗?有什么想法吗?
<Connector port="8443"
protocol="HTTP/1.1"
connectionTimeout="3000"
redirectPort="443"
SSLEnabled="false"
scheme="https"
secure="true"
useBodyEncodingForURI="true"
enableLookups="false"
maxThreads="400"
maxKeepAliveRequests="100"
acceptorThreadCount="4"
acceptCount="200"
proxyPort="443"
/>
答案 0 :(得分:2)
如果tomcat位于提供SSL转换以清除文本的负载均衡器后面,那么配置是正确的。除非您需要与tomcat进行安全的直接连接(绕过负载均衡器)(例如管理),否则您不希望或需要SSLEnabled
在tomcat上
在这种情况下,您需要secure=true
和scheme=https
。
如果您的tomcat服务器应用程序向客户端发送重定向,而不使用如下方案:
response.sendRedirect(response.encodeRedirectURL(contextPath + "/rareurl") );
如果你没有指定scheme=https
,那么tomcat服务器将会提供http。
将安全客户端重定向到不安全的URL,通常会导致下一个客户端请求被发送到http而没有客户端的安全登录会话cookie。在这种情况下,您最终可能会创建一个不必要的新会话,并可能在下次请求时注销您的客户端。
如果接收重定向的客户端不是真正的http客户端,则可能不会注意到从安全https到不安全http的切换。在这种情况下,他们可能会以明文形式播放会话cookie,这样一个坏人就可以轻松获取登录会话。
如果你没有secure=true
,那么tomcat添加到响应中的任何cookie都不会有cookie &#34; Secure&#34; 属性&#34;自动&#34 ;在开发人员未手动添加的情况下添加。
此外,如果服务器编码为基于安全属性将http重定向到https,那么当它查询请求以查看请求是否安全时,如果您没有安全请求,它会认为它不安全secure=true
。如果第三方jar查询连接(例如Adobe Flash Gateway)
答案 1 :(得分:0)
离开它。 SSL将在负载均衡器处终止,负载均衡器将明文HTTP发送到此连接器。