将证书和密钥导入 Java 密钥库时出错:keytool 错误:java.io.IOException:密钥库密码不正确

将证书和密钥导入 Java 密钥库时出错:keytool 错误:java.io.IOException:密钥库密码不正确

我正在安装一个需要 Java(两个受支持的版本 - 我选择了最新版本)和由我们内部 CA 签名的证书的应用程序。当我尝试将密钥/证书导入 Java 密钥库时,出现密码错误:

keytool error: java.io.IOException: keystore password was incorrect

脚步

我安装了 openssl:

openssl version
OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)

我创建了一个私钥和一个配置文件,并使用它们生成了 CSR:

openssl genrsa -out .\server.key 2048
openssl req -new -key .\server.key -config .\server.cnf -out .\server.csr

我收到了证书并使用已知密码合并了密钥和证书:

openssl pkcs12 -export -in '.\server.cer' -inkey .\server.key -out .\server.merged.pfx
Enter Export Password:
Verifying - Enter Export Password:

我安装了该应用程序支持的 Java 版本:

java --version
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)

我尝试创建一个新的密钥库,并使用上一步中已知的密码导入合并的 PFX 文件:

keytool -importkeystore -deststorepass changeit -destkeypass changeit -destkeystore .\temporary.keystore -srckeystore .\server.merged.pfx -srcstoretype PKCS12
Importing keystore .\server.merged.pfx to .\temporary.keystore...
Enter source keystore password:
keytool error: java.io.IOException: keystore password was incorrect

密码正确。密码由字母数字组成,大小写均可,无特殊字符,长度为 30 个字符。

我确信我以前做过这个,很久以前,而且很有效。

答案1

我意识到有点晚了,但也许它能帮助别人。

某些 Java 版本似乎在较新的 OpenSSL 中存在默认密码和密码哈希算法的问题

我通过向 OpenSSL 添加以下参数解决了这个问题:-certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES -macalg sha1因此,在您的情况下,您的命令将变成:

openssl pkcs12 -export -in '.\server.cer' -inkey .\server.key -out .\server.merged.pfx -certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES -macalg sha1

相关内容