是什么导致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
输入目标密钥库密码:
重新输入新的密码:
输入源密钥库密码: