【问题标题】:Support for TLSv1.1 in jdk 1.7.0_79jdk 1.7.0_79 中对 TLSv1.1 的支持
【发布时间】:2017-02-23 12:33:25
【问题描述】:

我们尝试了以下代码来识别 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 中进行的更改吗?

【问题讨论】:

    标签: java-7 tls1.2


    【解决方案1】:

    你快到了。你可以通过在 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

    【讨论】:

      猜你喜欢
      • 2014-06-12
      • 2016-09-23
      • 2017-03-22
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 2014-07-16
      • 1970-01-01
      • 2023-03-17
      相关资源
      最近更新 更多