好了,所以我们现在开始工作了。如果有人某天可能需要答案,我将在此处发布答案。
我们已经尝试了很多事情,所以我不能完全确定要使其正常运行需要实际做些什么,但是这是我们在此过程中进行了一些更改。
-Dhttps.protocols=SSLv3,TLSv1,SSLv2Hello ```添加此标志会导致证书出现在javax.net.debug日志中,但我们仍在获取SSLHandshakeException。似乎服务器接受的唯一密码是SSL_RSA_WITH_RC4_128_MD5。这不是我们的客户自动选择的。
-Dhttps.cipherSuites=SSL_RSA_WITH_RC4_128_MD5
我们添加了此标志以限制客户端的密码适合。通过编程设置相同的限制(不确定是否同时需要):
socket.setEnabledCipherSuites(new String[] {“SSL_RSA_WITH_RC4_128_MD5”});
```
将可用的密码套件限制为客户端可以使用的唯一密码套件,使客户端选择该密码套件。
我们还
jre/lib/security/java.security对启用文件
SSLv3和SSL_RSA_WITH_RC4_128_MD5密码进行了以下更改:
- SSLv3从…中删除
jdk.tls.disabledAlgorithms
- 添加
SSL_RSA_WITH_RC4_128_MD5
到jdk.tls.legacyAlgorithms
可能不建议将其用于生产服务器,因为SSLv3它已过时,并且密码非常老旧且过时,但是在这种情况下,安全性不是一个大问题(内部应用程序使用)。



