警告:使用 -cacerts 选项访问 cacerts 密钥库

Vij*_*mar 15 keytool openjdk-11

我正在向 Java 密钥库添加证书,但收到以下警告。命令成功。

keytool -import -trustcacerts -keystore /usr/lib/jvm/java-11-openjdk-amd64/lib/security/cacerts -storepass changeit -noprompt -alias my_root_ca.pem -file /usr/share/ca-certificates/foo/my_root_ca.pem
Run Code Online (Sandbox Code Playgroud)

警告是:

Warning: use -cacerts option to access cacerts keystore
Run Code Online (Sandbox Code Playgroud)

我如何摆脱这个警告?

谢谢

Las*_*eyx 19

这很容易。如果您查看 keytool 手册,您可以看到以下内容:

$ keytool -importcert -help
keytool -importcert [OPTION]...

Imports a certificate or a certificate chain

Options:

 ... removed for clearity
 -cacerts                access the cacerts keystore
Run Code Online (Sandbox Code Playgroud)

要消除该警告,您必须使用 -cacerts 选项而不是调用 cacert 密钥库:

keytool -import -trustcacerts -keystore -cacerts -storepass changeit -noprompt -alias my_root_ca.pem -file /usr/share/ca-certificates/foo/my_root_ca.pem
Run Code Online (Sandbox Code Playgroud)

  • 就像 @PauloMateus 所说,我使用的是 Java 11,需要删除 `-keystore` 参数才能使用 `-cacerts` --> `$JAVA_HOME/bin/keytool -list -v -cacerts -storepass changeit` (4认同)
  • 在 java 11 中,当使用“-cacerts”时,不可能使用“-keystore”和“-storetype” (2认同)
  • 请注意作为上下文:Java 9 中引入了“-importcert”的“-cacerts”选项。 (2认同)
  • 我不清楚“哪个”cacerts 存储被访问(使用多个 java JDK 管理构建服务器:8、9、11、17)。是来自系统 %JAVA_HOME% 的 cacerts 吗?或者当前文件夹中的 cacerts?或者与当前 keytool 版本相同的 java-dir 中的 cacerts?即使是[官方文档](https://docs.oracle.com/en/java/javase/17/docs/specs/man/keytool.html)也没有帮助,这是“*THE*”cacerts。因此,为了确定这一点,我继续使用“-keystore”选项,尽管有警告。 (2认同)