Java 10 内置根证书:OpenJDK 开箱即用 TLS 安全连接
JEP 319:根证书
Java 10 前,OpenJDK 构建中的 cacerts 密钥库为空,导致 TLS/HTTPS 等安全协议默认无法建立信任链,必须手动导入证书。
变革内容
- Oracle 将 Oracle Java SE Root CA 计划的根证书开源贡献给 OpenJDK。
- OpenJDK 构建现默认包含一组根证书,可直接验证主流 CA 签发的服务器证书。
- 缩小 OpenJDK 与 Oracle JDK 在安全功能上的差距。
证书来源与治理
- 证书由 Oracle Java SE Root CA 计划 签发。
- 已签署协议的 CA 厂商证书纳入集合。
- 未注册厂商证书将在后续版本补充。
实际影响
HTTPS、WebSocket Secure、JMX over TLS等开箱即用,无需手动配置cacerts。- 容器镜像构建更简洁:
FROM openjdk:10即可直接访问 HTTPS 资源。 - 企业内部自签证书仍需手动导入或配置自定义信任库。
验证方法
keytool -list -keystore $JAVA_HOME/lib/security/cacerts -storepass changeit
应显示包含多个 trustedCertEntry 条目(如 DigiCert, GlobalSign, Let's Encrypt 等)。
java
- 精通 Java 运算符:类型、语法与实战示例
- Java 注释:类型、用法与最佳实践
- 精通 Java if…else:控制流全解析
- 精通 Java 增强 for 循环:语法、示例与最佳实践
- Java break 语句:用法、时机与标签 break 详解
- 精通 Java 字符串:创建、方法与最佳实践
- 精通 Java 接口:概念、实现与最佳实践
- 精通 Java 匿名内部类:定义、语法与实战示例
- 精通 Java Try-With-Resources:自动资源管理详解
- Java 注解详解:类型、放置位置与实战示例
- Java 断言实战指南:尽早发现 Bug 与保障代码可靠性
- 深入理解 Java Vector:用法、特性及与 ArrayList 的对比