是什么导致keytool错误“无法解密安全内容条目”?

我试图使用此命令将标准PKCS#12(.p12)密钥库转换为Java JKS密钥库:

keytool -importkeystore -srckeystore keystore.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore keystore.jks

失败的是:

 keytool error: java.io.IOException: failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded 

你知道如何解决这个问题吗?

有时,此错误是使用p12密钥的密码不正确的症状。

pkcs12密钥库确实已损坏。

我之前从未尝试过这样做,但我确实在谷歌上找到了指示。

这个post提出了一个类似的问题。

编辑(根据评论)

以下是链接参考的完整内容:

PFX / P12到JKS(Java KeyStore)

问题:如何将证书从IIS / PFX(.p12文件)移动到JKS(Java KeyStore)?

答案: keytool -importkeystore -srckeystore PFX_P12_FILE_NAME -srcstoretype pkcs12 -srcstorepass PFX_P12_FILE -ssccalias SOURCE_ALIAS -destkeystore KEYSTORE_FILE -deststoretype jks -deststorepass PASSWORD -destalias ALIAS_NAME

注意:要查找srcalias,请列出PFX / P12文件的内容:

keytool -v -list -storetype pkcs12 -keystore PFX_P12_FILE> FILENAME.TXT这会将命令的输出写入名为FILENAME.TXT的文件。

我今天遇到了同样的问题(BadPaddingException)。 似乎keytool在密码中遇到某些字符的问题。 我通过在密码周围添加双引号来解决它。

keytool -importkeystore -srckeystore PFX_P12_FILE_NAME -srcstoretype pkcs12 -srcstorepass“PFX_P12_FILE”-srcalias SOURCE_ALIAS -destkeystore KEYSTORE_FILE -deststoretype jks -deststorepass“PASSWORD”-destalias ALIAS_NAME

我做了这个命令(与你的相反)从JKS将私钥导出到PKCS12:

keytool -importkeystore -srckeystore DemoIdentity.jks -srcstoretype JKS -destkeystore demoidentity.p12 -deststoretype PKCS12

如果我中断了看似多余的“-srcstoretype JKS”,生成的demoidentity.p12文件在我尝试列出keytool中的详细信息时给出了同样的错误,即使上面的命令接受了密码并且看起来正确生成了一个文件!

对于您的问题,也许您在生成keystore.p12时做了类似的事情。

当我尝试将证书从JKS导出为pfx时,我遇到了类似的问题。当我在keytool命令中排除deststorepass属性并在运行时给出目标存储密码时,它有效。

keytool -importkeystore -srckeystore Keystore.jks -destkeystore dv163.pfx -srcstoretype JKS -deststoretype PKCS12 -srcalias alias1-destalias alias1

输入目标密钥库密码:

重新输入新的密码:

输入源密钥库密码: