我正在安装一个需要 Java(两个受支持的版本 - 我选择了最新版本)和由我们内部 CA 签名的证书的应用程序。当我尝试将密钥/证书导入 Java 密钥库时,出现密码错误:
keytool error: java.io.IOException: keystore password was incorrect
Run Code Online (Sandbox Code Playgroud)
我安装了openssl:
openssl version
OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)
Run Code Online (Sandbox Code Playgroud)
我创建了一个私钥和一个配置文件,并使用它们生成 CSR:
openssl genrsa -out .\server.key 2048
openssl req -new -key .\server.key -config .\server.cnf -out .\server.csr
Run Code Online (Sandbox Code Playgroud)
我收到了证书并使用已知密码合并了密钥和证书:
openssl pkcs12 -export -in '.\server.cer' -inkey .\server.key -out .\server.merged.pfx
Enter Export Password:
Verifying - Enter Export Password:
Run Code Online (Sandbox Code Playgroud)
我安装了应用程序支持的 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)
Run Code Online (Sandbox Code Playgroud)
我尝试创建一个新的密钥库并使用上一步中的已知密码导入合并的 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
Run Code Online (Sandbox Code Playgroud)
密码正确。它都是字母数字,两种情况,没有特殊字符,长度为 30 个字符。
我确信我以前曾这样做过,不久前,而且它很有效。
我意识到有点晚了,但也许对其他人有帮助。
某些 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8522 次 |
| 最近记录: |