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

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打开我的商店

我错过了什么?

Omi*_*ron 8

您只使用第一个命令更改了密钥的密码.密钥的密码仍为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重试.