如何在Java中启用SSL 3
自Java 8 Update 31起,由于SSL协议中的安全漏洞,默认情况下禁用SSL 3协议(请参阅POODLE攻击 )。
即使不推荐,如何启用?
除非您使用SSL 3别无选择,否则下面的链接将说明配置。
更新31的发行说明提供了在Java中再次启用SSL 3的信息。
就像声明的那样:
如果绝对需要 SSLv3,则可以通过从java.security文件中的jdk.tls.disabledAlgorithms属性中删除“SSLv3”或通过在初始化JSSE之前将此Security属性动态设置为“true”来重新激活协议。
请记住,甚至可以利用TLS协议来允许使用SSL 3进行不安全的访问,这也是POODLE漏洞的一部分。 只有出于严峻的原因,为Java或任何其他技术启用此function应该是最后的手段。
如果必须在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
您可以在运行时设置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