關於在 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 的握手。
關於在 java 8 下開啟 TLS_RSA_WITH_3DES_EDE_CBC_SHA 支持 xp ie8 tls1.0 的正常訪問