关于在 java 8 下开启 TLS_RSA_WITH_3DES_EDE_CBC_SHA 支持 xp ie8 tls1.0 的正常访问
最近为 aioserver 增加了ssl支持。 在 myssl.com 上测试了一下,关于【客户端握手模拟】发现 ie8 xp tls1.0 这一项提示:握手失败 (服务器断开连接)
我又试了一下 baidu.com 和 taobao.com, 关于 ie8 xp tls1.0,可以握手成功,使用的【加密套件】: TLS_RSA_WITH_3DES_EDE_CBC_SHA
虽说 ie8 现在用的少,但国内应该还有一部分用户在使用,那就想办法让 java 8 支持 ie8 tls1.0 的访问吧。
我通过调用 sslEngine.getSupportedCipherSuites() 列出了 65 个可用的加密套件,但没有一个与 3DES 相关。
google 了一下,找到这篇资料: https://docs.oracle.com/javase/8/docs/technotes/guides/security/SunProviders.html
大致意思是在 java 8 默认禁用【加密套件】:"SSL_RSA_WITH_3DES_EDE_CBC_SHA"。
接着就继续查找如何开启 "SSL_RSA_WITH_3DES_EDE_CBC_SHA",找到的答案是:
打开文件夹 {JAVA_HOME} / jre / lib / security 中的安全策略文件: java.security, 修改 jdk.tls.disabledAlgorithms 选项。
java8 的 jdk.tls.disabledAlgorithms 默认值:
jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 1024, \ EC keySize < 224, DES40_CBC, RC4_40, 3DES_EDE_CBC
为了开启 SSL_RSA_WITH_3DES_EDE_CBC_SHA, 将 3DES_EDE_CBC 注释掉:
jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 1024, \ EC keySize < 224, DES40_CBC, RC4_40 #, 3DES_EDE_CBC
这时调用 sslEngine.getSupportedCipherSuites() 列出了 76 个可用的加密套件,之前可用的加密套件数是 65 个。
多出来的12个可用的加密套件就是与 3DES 相关的加密套件:TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, ...
通过测试只需添加 SSL_RSA_WITH_3DES_EDE_CBC_SHA 就可以支持 xp ie8 tls1.0 的握手。