загрузка файла хранилища ключей, псевдоним не найден

Я пытаюсь использовать KeyStore, чтобы получить информацию из хранилища ключей. Я создал хранилище ключей с помощью этой команды:

keytool -genkey -alias server -keyalg RSA -keystore server.keystore -validity 365 взята эта страница.

Проверяя его информацию keytool -list -v -keystore server.keystore я получаю следующее:

Псевдоним: server
Дата создания: 30 апреля 2014 г.
Тип записи: PrivateKeyEntry
Длина цепочки сертификатов: 1
Сертификат[1]:
(дополнительная информация здесь)

Используя эту команду: keytool -list -keystore server.keystore -alias server я получаю это:

сервер, 30 апреля 2014 г., PrivateKeyEntry, отпечаток сертификата (SHA1): 28:65:5B:0C:B3:3C:C9:AA:F1:7C:CE:91:23:77:DD:0D:F8:54 :70:B9

Теперь мой Java-код:

keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(getClass().getResourceAsStream(KEYSTORE_FILE_PATH), "myPass".toCharArray());
keyStore.getCertificate("server").getPublicKey().getEncoded(); //here I get a null pointer exception - keystore.getCertificate("server") returns null. 

Выполнение keyStore.aliases() возвращает EmptyEnumeration.

Приложение использует maven, java ee 7, и я скопировал файл хранилища ключей в папку ресурсов моего приложения. KEYSTORE_FILE_PATH имеет значение «/server.keystore».

Спасибо.


person Radu    schedule 30.04.2014    source источник


Ответы (1)


Класс. getResourceAsStream() возвращает null, когда нет ресурса с указанным именем. KeyStore.load() сбрасывает хранилище ключей в пустое состояние при передаче входного потока null.

Это означает, что во время выполнения ваш код не находит ресурс хранилища ключей и молча продолжает работу с пустым хранилищем ключей.

  • добавьте условие защиты, которое проверяет, что getResourceAsStream() вернуло ненулевое значение, прежде чем передать его значение в KeyStore.load().
  • просмотрите свой код и процесс сборки/упаковки в maven, чтобы убедиться, что файл хранилища ключей находится в нужном месте.

Есть некоторые вопросы about getResourceAsStream(), которые могут вам помочь.

person Oleg Estekhin    schedule 30.04.2014
comment
getResourceAsStream не возвращал значение null. Однако в проекте используется несколько модулей maven, а хранилище ключей было встроено в соответствующий jar, и из того, что я получил в результате отладки, во время выполнения был виден тип ZipEntry. Перемещение файла в модуль, упакованный как война, помогло. Спасибо. - person Radu; 01.05.2014