java - Keytool 认为 cacerts 不存在

标签 java keytool

我正在使用 OpenJDK 8(从 https://jdk.java.net/java-se-ri/8 下载并解压,添加到 PATH),并且遇到了证书错误。

经过调查,我意识到 cacerts 存在问题。

运行keytool -list -keystore cacerts返回错误:keytool错误:java.lang.Exception: keystore 文件不存在:cacerts

但运行keytool -list -keystore "C:\development\exec\cmd\jdk8\jre\lib\security\cacerts"

给我一​​份实际证书的列表。 JAVA_HOME 确实指向

C:\development\exec\cmd\jdk8PATH 确实有一个条目 %JAVA_HOME%\bin。我应该如何配置 java 以在正确的位置查找 cacerts?

java -version 返回以下内容:

openjdk version "1.8.0_40"
OpenJDK Runtime Environment (build 1.8.0_40-b25)
OpenJDK Client VM (build 25.40-b25, mixed mode)

最佳答案

看起来这个问题是基于一个不正确的前提 - keytool 不存在默认信任库位置之类的东西,它只是在当前目录中查找给定的文件。

在安装 Oracle JDK 8 并重复前面描述的步骤后,我意识到了这一点。我只是从来没有想过从 %JAVA_HOME%\jre\lib\security 运行 keytool;我一直从一个项目的目录运行它,该项目的构建由于存储库连接错误而失败。我最初遇到的实际问题是 OpenJDK cacerts 文件为空;我用从另一个 JRE 8 安装中获取的 cacerts 替换了它,并且从未想过在此之后重试构建。

关于java - Keytool 认为 cacerts 不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58498857/

相关文章:

java - 如何更改 char 数组中的 2 个以上值?

java - 生成 GOST 34.10-2001 key 对并将其保存到某个 keystore

java - 无法将证书导入 cacerts

java - SSL 握手异常 :no cipher suites in common

java - 我可以在不重新启动 JVM 的情况下将新证书添加到 keystore 吗?

Java使用组分隔符作为分隔符

java - 如何将资源所有者密码凭据与 Google OAuth 结合使用?

java - 如何在http header 中发送西里尔文/完成字符

java - 如何在使用 '<pathlist>' 时指定 'keytool -importcert ... -providerpath <pathlist>...'

java - 由于 ActionListener,JComboBox 未刷新/更新