1

在当时启用了 Java RC4 的早期版本中,我的应用程序运行良好,但在 Java 8 U 77 更新后,它不再使用以下密码,这些密码需要与我的一台旧服务器一起使用。

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>

仍然没有运气,在此先感谢。

4

2 回答 2

4

Oracle JRE 8u51的发行说明提到了一个名为 RC4 的新安全属性jdk.tls.legacyAlgorithms

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

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

于 2016-04-18T11:16:38.070 回答
1

为了解决这个问题,我们要做的是重新启用 RC4 和 MD5(现在两者都被视为受损算法)。这必须通过修改“java.security”配置(通过从 jdk.tls.disabledAlgorithms、jdk.certpath.disabledAlgorithms 中删除 RC4 和 MD5)文件并使用“SSLSocket/ 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

于 2016-04-19T09:51:04.797 回答