JDK 11 将根 ca 证书导入密钥库

Posted

技术标签:

【中文标题】JDK 11 将根 ca 证书导入密钥库【英文标题】:JDK 11 import root ca certificates into keystore 【发布时间】:2019-05-12 14:55:29 【问题描述】:

如何将证书导入 Azul Zulu JDK 11 中的密钥库。

keytool 使用的默认密钥库在哪里

【问题讨论】:

【参考方案1】:

/lib/security/cacerts

我花了一段时间才找到它,但在这里找到了答案:https://blogs.oracle.com/jtc/openjdk-10-now-includes-root-ca-certificates

【讨论】:

【参考方案2】:

从运行 Azul 的 Alpine OpenJDK11 容器 FROM azul/zulu-openjdk-alpine:11 开始,cacerts 文件位于 /usr/lib/jvm/java-11-zulu11/jre/lib/security/

但是,要将新证书导入其中,您只需要指定 -cacerts 开关,其余的由命令处理。

以下是我在最近的 Dockerfile 中使用的命令示例:

keytool -importcert -file <my-crt-file-location> -cacerts -keypass changeit -storepass changeit -noprompt -alias <my-alias>

【讨论】:

【参考方案3】:

java 11 信任库的路径是C:\Program Files\Java\jdk-11.0.4\lib\security\cacerts

要在 Windows 中导入证书,请使用以下命令。

"C:\Program Files\Java\jdk-11.0.1\bin\keytool" -importcert -file C:\Polarion\bundled\apache\conf\certificate.crt -alias labs.polarion.com -keystore "C:\Program Files\Java\jdk-11.0.1\lib\security\jssecacerts" -storepass changeit 

更多信息请点击here

【讨论】:

【参考方案4】:

适用于 MAC 和 LINUX openJDK11

先找到jdk位置

echo $JAVA_HOME

由于 keytool 和 cacerts 位于不同的文件夹中,我们必须指定路径

转到 keytool 文件夹 /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/bin/security

Sudo keytool -import -noprompt -trustcacerts -alias aliasName -file  /Users/lilojoseph/Desktop/dev.ssk.cer  -keystore  /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/lib/security/cacerts -storepass changeit

检查是否添加了证书在同一文件夹下运行以下命令

 keytool -list -v -keystore  /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/lib/security/cacerts -alias aliasName

【讨论】:

【参考方案5】:

采用openjdk/openjdk11@sha256:1cf34e59b4f6209c8513a1681a688bf8a90bf433993aa5b3914dcfdb100e9393

,cacerts 的位置是:

/opt/java/openjdk/lib/security/cacerts

【讨论】:

以上是关于JDK 11 将根 ca 证书导入密钥库的主要内容,如果未能解决你的问题,请参考以下文章

jdk生成CA证书

将公共证书导入密钥库时出错

keytool :证书导入给出错误消息 - 密钥库被篡改,或密码不正确

Java 从 Windows 密钥库访问中间 CA?

来自 CA 的 PKCS12 Java 密钥库和 Java 中的用户证书

android手机如何导入CA证书