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

标签 tomcat ssl

我们的团队从供应商处继承了一个 Web 应用程序。 Web 应用程序在 Tomcat 7.0.41(目前带有 OpenJDK 1.6)上运行。我查看了 Tomcat 服务器 xml,连接器配置如下。问题是为什么使用方案 https 和 secure=true 将 SSLEnabled 设置为 false。 TC 文档说 SSLEnabled 应该是“true”,通常带有 scheme 和 secure 是这样设置的。另外(重要的)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"
  />

最佳答案

如果 tomcat 位于提供明文 SSL 转换的负载均衡器之后,则配置正确。除非您需要安全直接连接(绕过负载均衡器)到 tomcat(例如管理),否则您不需要在 tomcat 上使用 SSLEnabled

在这种情况下,您需要 secure=truescheme=https。 如果您的 tomcat 服务器应用程序向客户端发送了一个重定向,而没有这样的方案:

response.sendRedirect(response.encodeRedirectURL(contextPath + "/rareurl") );

如果您不指定 scheme=https,tomcat 服务器将在前面加上 http。

将安全客户端重定向到不安全的 URL,通常会导致在没有客户端安全登录 session cookie 的情况下向 http 发出下一个客户端请求。在这种情况下,您最终可能会创建一个不必要的新 session ,并可能在您的客户下次请求时注销。

如果接收重定向的客户端不是真正的 http 客户端,它可能不会注意到从安全 https 到不安全 http 的切换。在这种情况下,他们可能会以明文形式广播他们的 session cookie,让坏人很容易获取登录 session 。

如果您没有 secure=true,那么 tomcat 添加到响应中的任何 cookie 都不会在 case 中“自动”添加 cookie "Secure" 属性开发人员不手动添加它的地方。

此外,如果服务器被编码为基于安全属性将 http 重定向到 https,那么当它查询请求以查看请求是否安全时,如果您没有 secure=true,它会认为它是不安全的。如果第三方 jar 查询连接(例如 Adob​​e Flash Gateway),它也可能导致问题

关于SSL 相关属性的 Tomcat 连接器元素组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35610779/

相关文章:

node.js - SSL 警报编号 46。警报证书未知。如何忽略此异常?

spring - 将运行在 TC 服务器/Tomcat 上的 JRuby 项目转换为 Spring Boot

tomcat - 如何通过命令行向tomcat传递属性

java - 使用 Tomcat 将 Java 应用程序连接到数据库

java - jsp中的下载链接不起作用

iOS 如何使用 ASyncSocket 进行 SSL 握手?

ssl - 如何在 Nginx 中为自定义位置设置双向 SSL?

java - Spring AOP 在 tomcat 8 上的 Web 应用程序中不起作用

php - Laravel 5.2 Socialite Facebook 登录 cURL 错误 60

PHP Curl 连接至 Amazon MWS 卖家 API