自从Java 8 Update 31开始,由于SSL协议的安全漏洞(参见POODLE攻击),SSL3协议默认被禁用。
即使不建议这样做,也可以如何启用SSL3协议?
即使不建议这样做,也可以如何启用SSL3协议?
除非你别无选择,只能使用SSL 3,否则请参考下面的链接来了解配置。
更新31的发行说明提供了在Java中重新启用SSL 3的信息。
如以下所述:
如果绝对需要SSLv3协议,则可以通过从java.security文件中的jdk.tls.disabledAlgorithms属性中移除"SSLv3",或在JSSE初始化之前动态设置此安全性属性为"true"来重新激活该协议。
请记住,即使TLS协议也可能被利用以允许使用SSL 3进行不安全访问,这也是POODLE漏洞的一部分。仅应出于关键原因才将其启用于Java或任何其他技术中。
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
本文讲述如何在Java 8中启用SSL v3.0
jdk.tls.disabledAlgorithms
安全属性。static {
Security.setProperty("jdk.tls.disabledAlgorithms", "");
}
我发现为了连接到DRAC 5卡,需要进行以下两个编辑:
移除MD5:
jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024
移除SSLv3、RC4和MD5withRSA:
jdk.tls.disabledAlgorithms=DH keySize < 768