web-dev-qa-db-ja.com

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

この問題を解決する方法はありますか?

24

Pkcs12キーストアは実際に破損していました。

8

このエラーは、p12キーに誤ったパスワードを使用していることを示す場合があります。

34
William Grand

これをやろうとしたことは一度もありませんが、グーグル here で指示を見つけました。

この thread は同様の質問をします。

EDIT(コメントに基づく)

リンクされた参照の完全なコンテンツは次のとおりです。

PFX/P12からJKS(Javaキーストア)

質問:証明書をIIS/PFX(.p12ファイル)からJKS(Java KeyStore )?

Answer:keytool -importkeystore -srckeystore PFX_P12_FILE_NAME -srcstoretype pkcs12 -srcstorepass PFX_P12_FILE -srcalias SOURCE_ALIAS -destkeystore KEYSTORE_FILE -deststoretype jks -deststorepass PASSWORD -destalias

注:srcaliasを見つけるには、PFX/P12ファイルの内容をリストします。

keytool -v -list -storetype pkcs12 -keystore PFX_P12_FILE> FILENAME.TXTこれにより、コマンドの出力がFILENAME.TXTという名前のファイルに書き込まれます。

5
axiopisty

今日も同じ問題が発生しました(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

3
KoJaman

JKSからPKCS12に秘密キーをエクスポートするには、次のコマンドを実行しました(あなたのコマンドとは逆です)。

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

一見冗長な「-srcstoretype JKS」を省略した場合、上記のコマンドがパスワードを受け入れ、一見正しくファイルを生成したにもかかわらず、keytoolで詳細をリストしようとしたときに、生成されたdemoidentity.p12ファイルで同じエラーが発生しました!

あなたの問題については、おそらくkeystore.p12を生成するときに似たようなことをしたでしょう。

2
Ben

JKSからPFXとして証明書をエクスポートしようとしたときに同様の問題が発生しました。keytoolコマンドでdeststorepass属性を除外し、実行時に宛先ストアのパスワードを指定すると機能しました。

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

宛先キーストアのパスワードを入力してください:

新しいパスワードを再入力してください:

ソースキーストアのパスワードを入力してください:

1
Ram