The*_*Man 3 java security jks keytool pkcs#12
我有一个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参数,但没有运气.
PS 2:我正在使用keystore explorer 5.11打开我的商店
我错过了什么?
您只使用第一个命令更改了密钥库的密码.密钥的密码仍为12345678.
虽然PKCS#12可能有不同的容器/内容密码,但这是一个坏主意,因为大多数应用程序都假设密码相同(这就是KeyStore Explorer显示错误消息的原因).
要更改您必须添加的密钥的密码-destkeypass
:
keytool -importkeystore -srckeystore myKeystore.jks -destkeystore myKeystore.p12
-deststoretype PKCS12 -srcalias someAlias -srcstorepass 12345678 -deststorepass
1122334455 -destkeypass 1122334455
Run Code Online (Sandbox Code Playgroud)
顺便说一句,因为Java 8 keytool显示了命令的错误消息:
keytool error:java.lang.Exception:目标pkcs12密钥库具有不同的storepass和keypass.请使用指定的-destkeypass重试.