標籤:通過 java 8 分享 com alt disable 支援 檔案 aio
最近為 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 的正常訪問