使用keytool更改密码时,从Java Keystore中提取PKCS12文件

时间:2016-03-24 09:45:29

标签: java security keytool pkcs#12 jks

我有一个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,但我无法读取它,因为密码不正确或文件已损坏。

enter image description here

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

  

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

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

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

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

我错过了什么?

1 个答案:

答案 0 :(得分:7)

您只使用第一个命令更改了密钥 store 的密码。 的密码仍为12345678.

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

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

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

BTW,因为Java 8 keytool显示了命令的错误消息:

  

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

相关问题