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 证书导入密钥库的主要内容,如果未能解决你的问题,请参考以下文章
keytool :证书导入给出错误消息 - 密钥库被篡改,或密码不正确