У меня следующий вопрос о хранилищах ключей Java и Keytool.Я предполагаю, что хранилище ключей может иметь более 1 сертификата.Как я уже пытался, с помощью 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.В нем 2 записи для сертификатов, 1 DSA и 1 RSA.У каждого свой пароль с хранилищем ключей (и друг с другом).Теперь код верен, потому что, если я использую хранилище ключей с одной записью сертификата, имеющей тот же пароль, что и хранилище ключей, исключений нет, и программа работает нормально.
Так в чем здесь проблема?Я не должен иметь разные пароли?У меня не должно быть много сертификатов?Или что?