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(…)
engine.setUseClientMode(…); // true or false depending on whether it is a DTLS client or server

•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();
int packetBufferSize = handshakeSession.getPacketBufferSize();

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值