如何在Java 8服务器应用程序上启用仅TLSv1.2

问题描述:

我正尝试配置在Java 8上运行的应用程序以支持只有 TLSv1.2连接。我已经看到有关改变.../jre/lib/security/java.security的文章,启动JVM时使用-Ddeployment.security.TLS *参数,当然在代码中指定了“TLSV1.2”的SSLContext 。如何在Java 8服务器应用程序上启用仅TLSv1.2

我已经设法让服务器仅支持TLSv1.1和TLSv1.2,但在拒绝TLSv1.1连接时一直没有成功。

任何帮助,将不胜感激。谢谢。

+0

(当前)'SSLContext'只设置协议上的_upper_绑定(除非FIPS模式)。你或任何库/中间件是否在SSLServerSocket SSLSocket和/或SSLEngine上调用'.setEnabledProtocols'?在'JRE/lib/security/security.java'中是否有任何非标准设置或者对'Security.setProperty'的等价调用? –

+0

我并没有意识到上限。感谢您的信息。如果我使用setEnabledProtocols(),我会得到所需的结果。但是,这是一个部分解决方案;我的原始问题仍然存在 - 是否有一种方法可以将启用的协议限制为仅针对整个JVM的TLS 1.2? – feh

+0

对于8u31和7u75,你可以编辑'java.security'中的'jdk.tls.disabledAlgorithms'(你的Q已经列出了,并且适用于所有运行该JRE的JVM),或者在JSSE之前等同地调用'Security.setProperty'初始化(可以根据JVM有所不同,但可能需要更新JRE默认更新或密码分析知识更改)。请注意,这会影响传入和传出连接(如果同时使用)。还发现愚蠢http://*.com/questions/32466407/how-to-force-java-server-to-accept-only-tls-1-2-and-reject-tls-1-0-and-tls -1-1-c –

编辑security.java的确行得通,假设你有所有必要的逗号。