Javaキーストアとkeytoolについて次の質問があります。キーストアには複数の証明書があると思います。私が試したように、keytoolを使用してキーストアを作成できます。このキーストアにアクセスするには、パスワードを設定する必要があります。また、各証明書エントリにアクセスするには、パスワードを設定する必要があります。キーストアとエントリに同じパスワードを設定する必要がありますか?そうでない場合(そして私はそう仮定するのが合理的だと思います)、なぜ次のコードがありますか?
char[] pwd = new char[]{'s','e','c','r','e','t'};
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(new FileInputStream("myPersonal.keystore"), pwd);
kmf.init(ks, pwd);//fails here with exception
次の例外がありますか?
Exception in thread "main" java.security.UnrecoverableKeyException: Cannot recover key
at sun.security.provider.KeyProtector.recover(Unknown Source)
at sun.security.provider.JavaKeyStore.engineGetKey(Unknown Source)
at sun.security.provider.JavaKeyStore$JKS.engineGetKey(Unknown Source)
at java.security.KeyStore.getKey(Unknown Source)
secret
myPersonal.keystore
keytoolで作成したキーストアにアクセスするためのパスワードです。その中には、証明書用に1つのDSAと1つのRSAの2つのエントリがあります。それぞれがキーストア(および相互)で異なるパスワードを持っています。これでコードは正しくなりました。キーストアと同じパスワードを持つ単一の証明書エントリを持つキーストアを使用した場合、例外はなく、プログラムは正常に実行されるためです。
では、ここでの問題は何ですか?別のパスワードを設定するべきではありませんか?私は多くの証明書を持っているべきではありませんか?または何?