次のコマンドを使用して、標準の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
この問題を解決する方法はありますか?
Pkcs12キーストアは実際に破損していました。
このエラーは、p12キーに誤ったパスワードを使用していることを示す場合があります。
これをやろうとしたことは一度もありませんが、グーグル 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という名前のファイルに書き込まれます。
今日も同じ問題が発生しました(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」を省略した場合、上記のコマンドがパスワードを受け入れ、一見正しくファイルを生成したにもかかわらず、keytoolで詳細をリストしようとしたときに、生成されたdemoidentity.p12ファイルで同じエラーが発生しました!
あなたの問題については、おそらくkeystore.p12を生成するときに似たようなことをしたでしょう。
JKSからPFXとして証明書をエクスポートしようとしたときに同様の問題が発生しました。keytoolコマンドでdeststorepass属性を除外し、実行時に宛先ストアのパスワードを指定すると機能しました。
keytool -importkeystore -srckeystore Keystore.jks -destkeystore dv163.pfx -srcstoretype JKS -deststoretype PKCS12 -srcalias alias1-destalias alias1
宛先キーストアのパスワードを入力してください:
新しいパスワードを再入力してください:
ソースキーストアのパスワードを入力してください: