OpenJDK 密钥工具密码

Jae*_*Kim 5 java jsse keytool

我正在尝试在 OpenJDK 中为 https 连接注册公司证书

我在OpenJDK版本 8 中运行了以下命令。它要求我输入密码。Oracle JDK 的默认密码是“changeit”,但它不适用于 OpenJDK

我曾尝试使用密码,changeit但没有用。

OpenJDK 8:

D:\java8\bin\keytool.exe -keystore "D:\java8\jre\lib\security\cacerts" -importcert -alias sds -file C:\Users\SDS\SDS.crt
Run Code Online (Sandbox Code Playgroud)

OpenJDK 版本 11:

D:\jdk-11.0.2\lib\security>D:\jdk-11.0.2\bin\keytool.exe -keystore D:\jdk-11.0.2\lib\security\cacerts -importcert -alias sds -file C:\Users\SDS\SDS.crt
Run Code Online (Sandbox Code Playgroud)

OpenJDK 8:

keytool ??: java.io.IOException: Keystore was tampered with, or password was incorrect
Run Code Online (Sandbox Code Playgroud)

OpenJDK 11版本,出现同样问题:

Warning: use -cacerts option to access cacerts keystore
Enter keystore password:
keytool error: java.io.IOException: Keystore was tampered with, or password was
Run Code Online (Sandbox Code Playgroud)

Lam*_*bda 8

对于 OpenJDK 8,首先仔细检查密码:

cd D:\java8\jre\lib\security
keytool -list -keystore cacerts -storepass changeit
Run Code Online (Sandbox Code Playgroud)

如果仍然出现相同的错误,请找到 Java 8 安装的确切版本,并从AdoptOpenJDK下载相应的 ZIP 存档(例如OpenJDK8U-jre_x64_windows_hotspot_8u212b04.zip)。

提取cacerts文件 ( lib/security/cacerts) 并使用二进制 diff 工具(例如fc)将下载的存档中的文件内容cacerts与本地版本进行比较。D:\java8\jre\lib\security\cacerts如果它们不相同,则您的文件可能已被修改。

您可以按照类似的过程来验证 OpenJDK 11 的cacerts文件。

另外:您不需要将自定义证书导入到原始文件中D:\java8\jre\lib\security\cacerts。我个人很少这样做。相反,保留原始文件,但在自定义文件夹中创建它的副本,并将您的公司证书添加到其中。对于您的情况,您可以cacerts从 ZIP 文件复制该文件并将其移动到您的主目录,然后将您的公司证书添加到其中,因为您不知道D:\java8\jre\lib\security\cacerts.

然后,当您运行 Java 程序时,将其配置为使用您的自定义cacerts文件而不是默认cacerts文件:

java -Djavax.net.ssl.trustStore=path/to/custom/cacerts
     -Djavax.net.ssl.trustStorePassword=changeit
     ...

Run Code Online (Sandbox Code Playgroud)

还有一件事:询问您的管理员 - 也许他故意更改了文件的密码cacerts