Java SSL / TLS版本设置

时间:2019-05-08 02:42:39

标签: java ssl

由于Java 7默认情况下使用TLS 1.0,因此我想将其升级到TLS1.2以增强安全性[仅https]。在oracle网站(https://www.oracle.com/technetwork/java/javase/documentation/cve-2014-3566-2342133.html)中, 它告诉我可以执行以下任一操作:

java.lang.System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2");

OR

java -Dhttps.protocols="TLSv1,TLSv1.1,TLSv1.2"

这两种方法都能很好地工作。

但是我想问为什么我需要在这里指定所有TLS版本。与

有何不同

java -Dhttps.protocols="TLSv1.2"

是否指定所有TLS版本允许与使用不同TLS版本的不同服务器通信? 另外,这里的顺序重要吗?

java -Dhttps.protocols="TLSv1.2,TLSv1,TLSv1.1"

行为会有所不同吗?

1 个答案:

答案 0 :(得分:2)

您的假设是正确的。当您指定

java -Dhttps.protocols="TLSv1.2"

您将只能与支持TLSv1.2的客户端进行通信。

但是当您有列表时

java -Dhttps.protocols="TLSv1.2,TLSv1,TLSv1.1"

您将有更多机会与支持这些不同版本的多个客户端进行通信。重要的是要知道,在握手协商期间,将选择两者都支持的最强版本。 (因此,定义它们的顺序并不重要)