12

从 Java 8 Update 31 开始,由于 SSL 协议中的安全漏洞,SSL 3 协议默认被禁用(参见POODLE 攻击)。

就算不推荐,怎么启用呢?

4

4 回答 4

13

除非您别无选择,只能使用 SSL 3,否则下面的链接说明了配置。

更新 31的发行说明提供了在 Java 中再次启用 SSL 3 的信息。

就像声明的那样:

如果绝对需要SSLv3 ,则可以通过从 java.security 文件中的 jdk.tls.disabledAlgorithms 属性中删除“SSLv3”或在初始化 JSSE 之前将此 Security 属性动态设置为“true”来重新激活协议。

请记住,即使是 TLS 协议也可以被利用来允许使用 SSL 3 进行不安全的访问,这也是 POODLE 缺陷的一部分。仅出于关键原因,才应为 Java 或任何其他技术启用此功能。

于 2015-01-30T12:35:55.797 回答
9

您可以jdk.tls.disabledAlgorithms像这样在运行时设置安全属性。

static {
    Security.setProperty("jdk.tls.disabledAlgorithms", "");
}
于 2016-07-18T10:56:40.147 回答
9

如果您必须在 8u31、7u75、6u91 上重新启用 SSLv3.0,您只需在JRE_HOME/lib/security/java.security中注释掉以下行:

 jdk.tls.disabledAlgorithms=SSLv3

代码:

import javax.net.ssl.*;

public class SocketProtocols {

  public static void main(String[] args) throws Exception {

    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);
    }

  }
} 

输出:

启用 SSL 3.0 之前

$ /jdk1.8.0_31/bin/java SocketProtocols
Enabled protocols:
TLSv1
TLSv1.1
TLSv1.2

启用 SSL 3.0 后

$ /jdk1.8.0_31/bin/java SocketProtocols
Enabled protocols:
SSLv3
TLSv1
TLSv1.1
TLSv1.2

学分/来源:http: //javablogx.blogspot.de/2015/02/enabling-ssl-v30-in-java-8.html

于 2016-05-02T11:38:34.860 回答
3

我发现要连接到 DRAC 5 卡,需要进行这两项编辑:

删除 MD5:

jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024

删除 SSLv3、RC4 和 MD5withRSA:

jdk.tls.disabledAlgorithms=DH keySize < 768
于 2016-07-05T21:10:50.230 回答