我有一个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
文件。
P.S:我也尝试添加-srckeypass参数,但没有运气。
P.S 2:我正在使用keystore explorer 5.11打开我的商店
我错过了什么?
答案 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重试。