如何在 Tomcat 8 和 Java 8 中重新启用 SSLv3

How to re-enable SSLv3 in Tomcat 8 and Java 8

将嵌入式 Tomcat 8 与 Java 8 一起使用,我无法重新启用 SSLv3 协议。我无法通过 Internet 选项 -> 选中 SSLv3 和所有其他(SSLv2、TLS1.0、TLS1.1、TLS1.2)未选中的高级设置来访问 Web 应用程序。我试过像这样设置 SSL 协议:

httpsConnector.setAttribute("sslProtocol", "SSLv3");

我也试过像这样设置 SSL 协议:

httpsConnector.setAttribute("sslEnabledProtocols", "SSLv3");

我还将此行添加到 deployment.properties 文件以在 JRE 8 中启用 SSLv3

deployment.security.SSLv3=true

最近的 JRE 禁用了 SSLv3,这是正确的:此时应该避免它是一个损坏的协议。但是,某些环境绝对需要支持 SSLv3,并且可以做到。

首先,您永远不应该禁用 TLSv1、TLSv1.1 和 TLSv1.2 等更高级别的协议。相反,将 SSLv3 添加到这些协议中,以便具有更好安全性的客户端仍然可以使用更高级别的协议。

为了在 JVM 中重新启用 SSLv3,您需要设置此系统 属性,可能在 JVM 启动时:

-Djdk.tls.disabledAlgorithms=

(注意这里没有值。)

您还需要做与上面已经完成的相同类型的事情,即设置 sslEnabledProtocolssslProtocol,但是,再次强调,请不要禁用更高级别的协议.

更新 2017-06-21

对于 Tomcat 8.5 和 9.0,SSLv3 已被硬编码为禁用并且需要源补丁并重新构建才能重新启用它,至少要通过 Tomcat 8.5.15 和 Tomcat 9.0.0.M21。目前有一些关于在 Tomcat 8.5 和 9.0 中取消该禁令的讨论。

更新 2017-06-22

SSLv3 将不再被列入黑名单 Tomcat 8.5.17 and Tomcat 9.0.0.MR23