密钥库认为cacerts不存在

4
我正在使用OpenJDK 8(从https://jdk.java.net/java-se-ri/8下载并解压缩,添加到PATH),但我遇到了证书错误。
经过调查,我发现cacerts存在问题。
运行keytool -list -keystore cacerts会返回一个错误:keytool error: java.lang.Exception: Keystore file does not exist: 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命令中,*.cer文件在何处?请访问此网址https://dev59.com/eWw15IYBdhLWcg3w4_tL。 - Lova Chittumuri
除非我误解了什么,.cer文件包含证书,人们会将其导入到信任存储中,但这不是我要做的。我的问题是Java无法看到信任存储,即使它位于默认位置。 - kjerins
1个回答

6

看起来这个问题基于错误的前提 - 没有默认的信任库位置,keytool 只是在当前目录中查找给定的文件。

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


1
谢谢你,好人,我已经苦苦挣扎两天来解决这个问题了!从另一台机器复制cacerts这个想法没有出现在我的脑海中! - sfranky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接