由于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"
?
行为会有所不同吗?
答案 0 :(得分:2)
您的假设是正确的。当您指定
java -Dhttps.protocols="TLSv1.2"
您将只能与支持TLSv1.2的客户端进行通信。
但是当您有列表时
java -Dhttps.protocols="TLSv1.2,TLSv1,TLSv1.1"
您将有更多机会与支持这些不同版本的多个客户端进行通信。重要的是要知道,在握手协商期间,将选择两者都支持的最强版本。 (因此,定义它们的顺序并不重要)