如何在Java中启用SSL 3

Eva*_*tti 11 java ssl poodle-attack

自Java 8 Update 31以来,由于SSL协议中的安全漏洞,默认情况下禁用SSL 3协议(请参阅POODLE攻击).

即使不推荐,如何启用它?

Eva*_*tti 12

除非您使用SSL 3别无选择,否则下面的链接将说明配置.

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

就像声明的那样:

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

请记住,甚至可以利用TLS协议来允许使用SSL 3进行不安全的访问,这也是POODLE漏洞的一部分.只有出于严峻的原因,为Java或任何其他技术启用此功能应该是最后的手段.


Ayd*_* K. 9

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

 jdk.tls.disabledAlgorithms=SSLv3
Run Code Online (Sandbox Code Playgroud)

码:

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

  }
} 
Run Code Online (Sandbox Code Playgroud)

输出:

在启用SSL 3.0之前

$ /jdk1.8.0_31/bin/java SocketProtocols
Enabled protocols:
TLSv1
TLSv1.1
TLSv1.2
Run Code Online (Sandbox Code Playgroud)

启用S​​SL 3.0后

$ /jdk1.8.0_31/bin/java SocketProtocols
Enabled protocols:
SSLv3
TLSv1
TLSv1.1
TLSv1.2
Run Code Online (Sandbox Code Playgroud)

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


mR_*_*r0g 8

您可以jdk.tls.disabledAlgorithms在运行时设置安全属性,如此.

static {
    Security.setProperty("jdk.tls.disabledAlgorithms", "");
}
Run Code Online (Sandbox Code Playgroud)