【问题标题】:Extract PKCS12 file from Java Keystore while changing the password using keytool使用 keytool 更改密码时从 Java 密钥库中提取 PKCS12 文件
【发布时间】:2018-04-19 22:52:55
【问题描述】:

我有一个 Java 密钥库:myKeystore.jks,并给定了一个别名:someAlias,我试图在更改密码时以p12 格式提取相应的资源。

JKS 密码是12345678,与 someAlias 密钥的密码相同。

我想用新密码保护我的 p12 文件:1122334455

我尝试过的:

keytool -importkeystore -srckeystore myKeystore.jks -destkeystore test.p12 -deststoretype PKCS12 -srcalias someAlias -srcstorepass 12345678 -deststorepass 1122334455

在这种情况下,test.p12 已导出,但我无法读取它,因为密码不正确或文件已损坏。

但是当我尝试这个时(保持相同的密码):

keytool -importkeystore -srckeystore myKeystore.jks -destkeystore test.p12 -deststoretype PKCS12 -srcalias someAlias -srcstorepass 12345678 -deststorepass 12345678

我可以使用给定的密码打开我的test.p12 文件。

PS:我也尝试添加 -srckeypass 参数,但没有运气。

P.S 2:我正在使用 keystore explorer 5.11 来打开我的商店

我错过了什么?

【问题讨论】:

  • 您必须在 .p12 文件中显示导致错误的命令,以及错误消息本身,逐字显示,而不是意译。

标签: java security keytool pkcs#12 jks


【解决方案1】:

您只用第一个命令更改了密钥store 的密码。 key的密码还是12345678。

虽然 PKCS#12 可以为容器/内容设置不同的密码,但这是一个坏主意,因为大多数应用程序都假定密码相同(这就是 KeyStore Explorer 显示该错误消息的原因)。

要更改密钥的密码,您必须添加-destkeypass

keytool -importkeystore -srckeystore myKeystore.jks -destkeystore myKeystore.p12 
-deststoretype PKCS12 -srcalias someAlias -srcstorepass 12345678 -deststorepass 
1122334455 -destkeypass 1122334455    

顺便说一句,因为 Java 8 keytool 会为您的命令显示错误消息:

keytool 错误:java.lang.Exception:目标 pkcs12 密钥库具有不同的 storepass 和 keypass。请使用指定的 -destkeypass 重试。

【讨论】:

  • -destkeypass 解决问题,我用的是JAVA 7,命令执行成功。
最近更新 更多