本文目录导读:

- JDK 8 及更早版本(传统 API)
- JDK 9 引入了若干改进(2017年)
- JDK 11(LTS,2018年)
- JDK 14 开始重大变更(2020年)
- JDK 17(LTS,2021年)
- JDK 21 及之后(2023年+)
- 重要趋势(非直接 API 变更,但影响使用)
截至2025年5月,Java 证书管理相关的 API 经历了多次演变,具体取决于你使用的 JDK 版本,以下是关键版本的总结:
JDK 8 及更早版本(传统 API)
- 核心类:
java.security.cert包下的CertificateFactory、X509Certificate、CertPath、CertPathValidator等。 - 密钥库管理:
java.security.KeyStore。 - 特点: API 设计较老,对现代 TLS 特性(如 OCSP Must-Staple、证书透明度)支持较弱。
JDK 9 引入了若干改进(2017年)
java.security.cert包新增了一些方法:X509Certificate增加了对 OCSP(在线证书状态协议)响应的解析方法。KeyStoreAPI 小幅更新: 增加了对 PKCS12(公钥密码标准 #12)更严格的支持(作为默认密钥库格式)。- TLS 层面: 底层 SSL/TLS 实现开始支持更多扩展(Certificate Transparency, CT),但 API 层面变化不明显。
JDK 11(LTS,2018年)
CertificateRevokedException增强: 允许获取撤销原因。KeyStore更新: 对PKCS12格式的内部处理进行了重构,提高了安全性和兼容性。
JDK 14 开始重大变更(2020年)
- 移除底层 SunX509 提供程序的部分实现: 这不会影响
java.security.certAPI,但会影响KeyFactory和CertificateFactory的某些内部实现细节。 java.security.cert.CertificateFactory新增方法: 某些版本中增加了对导入 PEM(隐私增强邮件格式)格式证书的更好的支持(通过InputStream)。
JDK 17(LTS,2021年)
java.security.cert.CertificateRevokedException持续改进: 支持更多撤销数据。PKCS12KeyStore成为默认:KeyStore实例化时默认使用PKCS12,这影响证书和私钥的存储读取方式。CertPathBuilder和CertPathValidatorAPI 更新: 新增了getAlgorithmParameters()等方法,便于获取验证参数。
JDK 21 及之后(2023年+)
CertificateFactory支持PEM直接生成: 虽然以前也可以通过ByteArrayInputStream处理 PEM,但现在官方文档明确支持直接从 PEM 格式的InputStream生成X509Certificate对象。HttpClient与证书管理集成: 虽然没有直接修改java.security.cert包,但新HttpClient的SSLParameters支持更细粒度的证书验证回调。KeyStore沙箱化: 对KeyStore的访问引入了更严格的安全限制,特别是在模块化系统(JPMS,Java平台模块系统)中。CertPathValidator: 增加了对现代撤销机制(如 OCSP 签名委托)的更好支持。
重要趋势(非直接 API 变更,但影响使用)
- 默认证书库更新: Oracle 和 OpenJDK 自建了
cacerts信任库,不再完全依赖系统根证书,API 对应的TrustManagerFactory和KeyManagerFactory行为有所调整(默认使用PKIX算法)。 - 为抗量子密码做准备: JDK 21+ 在底层开始引入混合密钥封装机制(ML-KEM),虽然证书 API 本身未变,但未来的
CertificateFactory和KeyStore可能需要处理更复杂的密钥类型。
是的,Java 证书管理 API 在持续“小步快跑”式升级,而不是一次性的“大版本升级”。 如果你是开发者,最新重要的变化集中在:
KeyStore完全转向 PKCS12。CertificateFactory对 PEM 的更好支持。CertPathValidator对现代撤销链处理的改进。- 模块化系统带来的访问限制。
如果你遇到了具体问题(如代码在 JDK 8 正常但在 JDK 21 报错),这通常是由于这些内部实现细节变化导致的,而非 API 方法签名的彻底改变,建议你升级到最新 LTS(如 JDK 21 或即将发布的 JDK 25 LTS)并参考其 release notes(版本发布说明)中的“安全”章节。
版权声明:足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播