Sai*_*uli 7 java openssl keytool pkcs#12
我使用私钥创建了 PKCS12 文件,并使用 openssl 创建了公共证书。我正在尝试导入 PCKS12,但收到错误密钥库密码是正确的。我在命令行参数中添加了密码,如下所示:
openssl pkcs12 -export -in myCert.cer -inkey privatekey.key -out pkcs12.p12 -name somename -password pass:someSecret2022
Run Code Online (Sandbox Code Playgroud)
然后我使用以下 keytool 命令:
keytool -importkeystore -srckeystore pkcs12.p12 -srcstoretype pkcs12 -destkeystore some.jks -deststoretype jks -srcstorepass someSecret2022 -deststorepass changeit
Run Code Online (Sandbox Code Playgroud)
我不断收到错误
keytool error: java.io.IOException: keystore password was incorrect
Run Code Online (Sandbox Code Playgroud)
最重要的是,我使用相同的pcks12.p12文件在 Windows 中导入,它接受上述密码。
我使用的是 zulu 8 java 版本1.8.0_322和 openssl 版本 3.0.3。
感谢您的帮助。
dav*_*085 11
在 KeyStore 加载上复制“java.io.IOException:密钥库密码不正确”(我没有完全回答)。OpenSSL 3.0.x 默认使用用于 PKCS12 的 PBKDF2 和 HmacSHA256(早期的 OpenSSL 没有),并且在某些Java 版本中,标准提供程序错误地处理了此方案,导致它无法解密加密的密钥和证书;请参阅https://bugs.openjdk.java.net/browse/JDK-8278989。选项:
使用 OpenSSL 1.1.x(或更低版本,但不受支持)创建
使用 OpenSSL 3.0.x 指定(改进)-legacy和可选-descert- 或者更详细(更正),-certpbe x -keypbe x -macalg sha1其中 x 是非 PBKDF2 算法之一,例如pbeWithSHA1And3-KeyTripleDES-CBC或更容易键入的别名PBE-SHA1-3DES(我不确定 -macalg 是总是需要的,如果愿意的话可以尝试省略)
使用 Java 11.0.12 或更高版本,或者在 8 中使用奇数Oracle版本 (301,311,321,333),而不是偶数 OpenJDK 版本 (302,312,322)
在任何 Java 中,请使用https://www.BouncyCastle.org提供程序,优先级高于Oracle 提供程序
使用 OpenSSL 3.0.x 以外的其他内容(重新)编写 PKCS12;例如,在我的 Windows 10 Home 上,如果我导入到 Windows(正如您所指出的),然后使用默认设置 Encryption=TripleDES-SHA1(不选择 AES128-SHA256)从 Windows 导出,结果在受影响的 Java 版本中是可读的。我想这也适用于 Windows 11。几乎可以肯定还有其他方法。
使用 keytool 以外的工具来读入 JKS。你可以编写自己的代码(StackOverflow 上有很多关于这一点的问题),或者有许多现有的程序是由有同样需求的不同人创建的。我喜欢https://keystore-explorer.org,因为它打包方便并且具有漂亮的 GUI。
| 归档时间: |
|
| 查看次数: |
7288 次 |
| 最近记录: |