我们已尝试使用以下代码来识别java版本1.7.0_79
支持的协议SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket soc = (SSLSocket) factory.createSocket();
// Returns the names of the protocol versions which are
// currently enabled for use on this connection.
String[] protocols = soc.getEnabledProtocols();
System.out.println("Enabled protocols:");
for (String s : protocols) {
System.out.println(s);
}
上述计划的输出..
1.7.0_79
Enabled protocols:
TLSv1
为了支持TLSv1.1,我们尝试了以下选项
-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2
程序,但它不起作用,只显示TLSv1。然后参考link我们添加了以下行
jdk.tls.disabledAlgorithms= SSLv2Hello, SSLv3, TLSv1, TLSv1.1
也没有帮助。有人可以帮助确定要在jdk 1.7.0_79中完成的更改吗?
答案 0 :(得分:0)
你几乎就在那里。你可以通过在JDK 1.7.0_79的代码中添加以下条目来禁用 TLSv1.0
sslSocket.setEnabledProtocols(new String[] {"TLSv1.1", "TLSv1.2"});
有关进一步说明,请参阅here
示例强>
SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket sslSocket = (SSLSocket) factory.createSocket();
sslSocket.setEnabledProtocols(new String[] {"TLSv1.1", "TLSv1.2"});
// Returns the names of the protocol versions which are
// currently enabled for use on this connection.
String[] protocols = sslSocket.getEnabledProtocols();
System.out.println("Enabled protocols:");
for (String s : protocols) {
System.out.println(s);
}
<强>输出强> -
Enabled protocols:
TLSv1.1
TLSv1.2
其他方式
此外,如果您被允许迁移到JDK1.8,那么默认情况下它会禁用 TLSv1.0 并支持 TLSv1.1,TLSv1.2