JDK 9、10和11中的安全性增强
縮短JDK發布周期的原因之一是有可能推出更快的安全錯誤修復和增強功能。 在本文中,我們將簡要回顧一下最新JDK版本中引入的主要安全增強功能。 由于這些增強功能中的大多數與TLS相關,因此必須了解TLS握手過程,如下圖所示:
JDK 9
JDK 9中引入的主要安全增強功能與JSSE(Java安全套接字擴展)API提供的TLS支持有關。 這些包括:
?JDK 9中的DTLS支持:DTLS本質上提供了UDP上的TLS,因此您可以加密通過UDP運行的不可靠協議建立的通信
SSLContext sslContext = SSLContext.getInstance("DTLS");
sslContext.init(…)
SSLEngine engine = sslContext.createSSLEngine();
?JDK 9中的TLS ALPN擴展:支持在TLS握手過程中協商應用程序協議,可接受的協議列表設置為TLS客戶端和TLS服務器上的簡單字符串列表
SSLParameters sslParams = sslSocket.getSSLParameters();
sslParams.setApplicationProtocols(…)
或(用于非阻塞操作模式)
SSLParameters sslParams = sslEngine.getSSLParameters();
sslParams.setApplicationProtocols(…)
或(使用更復雜的邏輯來確定協商的協議)
sslSocket.setHandshakeApplicationProtocolSelector((serverSocket, clientProtocols) {
SSLSession handshakeSession = serverSocket.getHandshakeSession();
String cipher = handshakeSession.getCipherSuite();
TLS ALPN派上用場,即適用于為其客戶端同時支持TLS的HTTP 1.1和HTTP 2.0協議的Web服務器
?用于TCP的OCSP裝訂:提供一種在TLS服務器(而不是TLS客戶端)上進行證書吊銷檢查的機制,從而節省了網絡帶寬,必須同時在TLS客戶端和TLS服務器上啟用
-Djdk.tls.client.enableStatusRequestExtension=true
-Dcom.sun.net.ssl.checkRevocation=true
和(在TLS服務器上)
-Djdk.tls.server.enableStatusRequestExtension=true
?默認情況下,PKCS12密鑰庫(到目前為止,它們是JKS,但是它們不能跨Java編程語言移植)
?基于DRBG的SecureRandom實施
?利用GHASH和RSA的CPU指令 ?SHA-1證書已禁用,無法進行證書驗證 ?SHA-3哈希算法的實現
JDK 10
JDK 10中引入了兩個主要的增強功能:
JEP 319根證書:列表或根證書已公開給JDK的cacerts密鑰庫
一些與安全相關的API標記為要刪除:
JDK 11
JDK 11中引入的主要安全增強功能由JEP 332:傳輸層安全性(TLS)1.3提供。 這是TLS協議的新版本,與TLS規范的先前版本(1.2)相比,提供了許多增強功能。 此外,對cacerts密鑰庫中的根證書進行了更多增強(添加了一些根證書,并刪除了一些根證書)。
翻譯自: https://www.javacodegeeks.com/2018/12/security-enhancements-jdk-9-10-11.html
總結
以上是生活随笔為你收集整理的JDK 9、10和11中的安全性增强的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring构造函数依赖注入示例
- 下一篇: 叛乱画面设置(叛乱2画质)