java - OpenJDK key 工具密码

标签 java keytool jsse

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

我在 OpenJDK 中运行了以下命令verion 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

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

OpenJDK 8:
keytool 오류: java.io.IOException: Keystore was tampered with, or password was incorrect

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

最佳答案

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

cd D:\java8\jre\lib\security
keytool -list -keystore cacerts -storepass changeit

如果它继续给您同样的错误,请找到您的 Java 8 安装的确切版本并从 AdoptOpenJDK 下载相应的 ZIP 存档。 (例如 OpenJDK8U-jre_x64_windows_hotspot_8u212b04.zip )。

提取 cacerts文件( lib/security/cacerts )并使用二进制差异工具(例如 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
     ...


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

关于java - OpenJDK key 工具密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56847306/

相关文章:

java - 显示 CSV 文件中的前 10 个单词

java - ".android"文件夹和 "debug.keystore"文件丢失

java - 是否可以使用 JFileChooser 加载 KeyStore?

java - NoClassDefFoundError at Runtime on class inside external .AAR library

java - 获取 HTTP 和 HTTPS 值常量的任何方法

java - 无法导入 .p12 keystore

certificate - 从 docker 文件调用时出现 keytool 错误 : java. io.FileNotFoundException(权限被拒绝)

java - 使用 JSSE 时应该如何进行主机名验证?

java - 如何使用多个信任源初始化 TrustManagerFactory?

java - 如何获得当天到目前为止的总分钟数?