jdk8与jdk8以后的版本证书安装路径的区别

举报
developer_Li 发表于 2025/10/10 14:24:15 2025/10/10
【摘要】 jdk8升级后的证书安装可能会有一些问题,梳理一下流程

背景

jdk从JDK 9 开始,Oracle 就对 Java 平台进行了模块化重构(Project Jigsaw),并取消了传统意义上的 JRE 目录结构。这是一次架构上的重大变革,目的是让 Java 更轻量、更灵活、更安全。

原因

  • 模块化设计:JDK 9 引入了模块系统,JRE 不再是一个固定的目录,而是可以根据需要定制。
  • DK 已包含运行环境:JDK 本身就包含了运行 Java 程序所需的全部内容,不再需要单独的 JRE。
  • 减少冗余:以前 JDK 和 JRE 都包含一套运行时,容易造成重复。现在统一为一个 JDK,简化维护。
  • 鼓励使用 jlink:开发者可以使用 jlink 工具按需生成自定义的运行时镜像(类似 JRE),只包含所需模块。

如何自己生成 JRE?

可以使用 jlink 命令创建一个自定义的 JRE:

jlink --module-path $JAVA_HOME/jmods --add-modules java.desktop --output jre
  • –module-path 指向 JDK 的 jmods 目录
  • –add-modules 指定你需要的模块(如 java.base, java.desktop 等)
  • –output 指定生成的 JRE 目录
    这样就可以得到一个轻量级的、只包含必要模块的 JRE

证书安装

安装路径

jdk8及以前

$JAVA_HOME/jre/lib/security/cacerts

cacerts 是 Java 默认的证书库(keystore),用于存储受信任的根证书。

步骤

  1. 导出目标网站证书
  • 用浏览器访问目标 HTTPS 网站
  • 点击地址栏的🔒图标 → 查看证书 → 导出为 .cer 或 .crt 文件(Base64 编码)
  1. 使用 keytool 导入证书
keytool -import -alias yourCertAlias -file /path/to/yourCert.crt -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit
  • -alias:证书别名,自定义即可
  • -file:你的证书文件路径
  • -keystore:目标证书库路径
  • -storepass:默认密码是 changeit
  1. 验证是否导入成功
keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts -alias yourCertAlias -storepass changeit

看到证书信息就说明导入成功。

JDK 9 及以后版本可能没有 jre 子目录,证书库路径变为:

$JAVA_HOME/lib/security/cacerts

使用 jlink 创建自定义 JRE 时,默认生成的目录结构如下

your-custom-jre/
├── bin/
├── conf/
│   └── security/
│       └── cacerts
├── lib/

所以证书路径为:

your-custom-jre/conf/security/cacerts

如果jdk与jre下都安装了证书,验证Java程序真正使用的哪个运行环境

public class CheckJavaEnv {
    public static void main(String[] args) {
        System.out.println("Java Version: " + System.getProperty("java.version"));
        System.out.println("Java Home: " + System.getProperty("java.home"));
        System.out.println("Java Vendor: " + System.getProperty("java.vendor"));
    }
}

运行后会输出当前程序使用的 Java 环境信息

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。