Java 8更新后的RC4相关问题

时间:2016-04-18 10:10:12

标签: java encryption java-8 java-security

在之前版本的Java RC4启用时,我的应用程序工作正常,但在Java 8 U 77更新后,它不再使用以下需要与我的旧服务器一起使用的密码。< / p>

TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
TLS_ECDHE_RSA_WITH_RC4_128_SHA
SSL_RSA_WITH_RC4_128_SHA
TLS_ECDH_ECDSA_WITH_RC4_128_SHA
TLS_ECDH_RSA_WITH_RC4_128_SHA
SSL_RSA_WITH_RC4_128_MD5

我修改了java.security,禁用的算法部分如下所示,

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

仍然无法使上述套件正常工作。任何启用它们的想法,我也尝试在运行应用程序时添加它们,

java -Djavax.net.debug=all -Djavax.net.debug=ssl:handshake:verbose -Dhttps.cipherSuites="TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,SSL_RSA_WITH_RC4_128_SHA,TLS_ECDH_ECDSA_WITH_RC4_128_SHA,TLS_ECDH_RSA_WITH_RC4_128_SHA,SSL_RSA_WITH_RC4_128_MD5" <myApp>

仍然没有运气,提前谢谢。

2 个答案:

答案 0 :(得分:4)

release notes of Oracle JRE 8u51提到了一个名为jdk.tls.legacyAlgorithms的新安全属性,其中添加了RC4:

  

RC4现在被视为弱密码。除非客户端请求的密码套件中没有其他更强的候选者,否则服务器不应选择RC4。添加了一个新的安全属性jdk.tls.legacyAlgorithms来定义Oracle JSSE实现中的遗留算法。 RC4相关算法被添加到遗留算法列表中。

我假设你必须从java.security文件中的属性列表中删除RC4_40以使其再次可用。

答案 1 :(得分:1)

为了解决这个问题,我们要做的是重新启用RC4和MD5(两者现在都被视为受损算法)。这必须通过修改“java.security”配置(通过从jdk.tls.disabledAlgorithms,jdk.certpath.disabledAlgorithms中删除RC4和MD5)文件并使用“SSLSocket /”重新添加上述“Absences密码套件”来完成。 SSLEngine.setEnabledCipherSuites()”。有关重新添加RC4相关密码的更多信息,请参阅Java 8发行版重点(https://java.com/en/download/faq/release_changes.xml)的Java 8 Update 60(8u60)部分和以下参考(http://bugs.java.com/view_bug.do?bug_id=8076221