'storepass'を提供せずにKeyStoreからキーを取得できるかどうかを知る必要があります。ドキュメントhereは、「キーストアから情報を取得する場合、パスワードはオプションです。パスワードが指定されていない場合は、取得した情報の整合性が確認できないと警告が表示されている」と言うKeyStoreパスワードなしのキーを取得
は、しかし、私がしようとすると、パスワードなしでキーを取得する"java.lang.IllegalArgumentException:パスワードはnullにできません"例外。
私は
後のkeytool -genseckey -alias "MYKEY" -keystoreたkeystore.jks -storepass "パスワード" -storetype "JCEKS" キーストアを作成する方法です-keyalg AES -keysize 128
そして、私は次の例外をスロー
final KeyStore keyStore = KeyStore.getInstance("JCEKS");
keyStore.load(new FileInputStream(new File("C:\\temp\\keytool\\KEYSTORE.jks")),
null);
final Key key = keyStore.getKey("myKey", null);
を次のようにそれを取得しようとした
java.lang.IllegalArgumentException: password can't be null
at com.sun.crypto.provider.SunJCE_z.<init>(DashoA13*..)
at com.sun.crypto.provider.JceKeyStore.engineGetKey(DashoA13*..)
at java.security.KeyStore.getKey(KeyStore.java:763)
ドキュメントを完全に誤解しましたか?私は誰もがそれを見ることができる私のコードで 'storepass'を明確に保存することに意味がないので、パスワードを役に立たないようにして、これを回避する方法はありますか?
はいため にあなたを促すメッセージが表示されます、見えますocumentation。それでは、これを回避するために推奨される承認がありますか?私はちょうどそのコードのようなパスワードを持つことはできません。ありがとう – Nishant
あなたの問題は、コード内のハードコードされたパスワードを避けることです?それは最も一般的な問題です。あなたは本当にそれについて多くを行うことはできません。推薦されたアプローチは一般的にユーザーからパスワードを要求しています。あなたは何か精巧なことをすることができますパスワードを暗号化してもそれほど多くは得られません。また、ユーザーに責任を委任することもできます。つまり、ファイルシステムを安全に保つことができます。 – Cratylus