在jdk 1.7.0_79中支持TLSv1.1

时间:2016-10-14 07:08:12

标签: java-7 tls1.2

我们已尝试使用以下代码来识别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,我们尝试了以下选项

  • 参考link执行的-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2程序,但它不起作用,只显示TLSv1。
  • 然后参考link我们添加了以下行

    jdk.tls.disabledAlgorithms= SSLv2Hello, SSLv3, TLSv1, TLSv1.1
    
在java.security中的

也没有帮助。有人可以帮助确定要在jdk 1.7.0_79中完成的更改吗?

1 个答案:

答案 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