用于SSL相关属性的Tomcat连接器元素组合

时间:2016-02-24 19:02:06

标签: tomcat ssl

我们的团队从供应商那里继承了一个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"
  />

2 个答案:

答案 0 :(得分:2)

如果tomcat位于提供SSL转换以清除文本的负载均衡器后面,那么配置是正确的。除非您需要与tomcat进行安全的直接连接(绕过负载均衡器)(例如管理),否则您不希望或需要SSLEnabled在tomcat上

在这种情况下,您需要secure=truescheme=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发送到此连接器。