Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Ranzed  
#1 Оставлено : 2 октября 2015 г. 18:41:32(UTC)
Ranzed

Статус: Участник

Группы: Участники
Зарегистрирован: 29.09.2015(UTC)
Сообщений: 17
Российская Федерация
Откуда: Ижевск

Сказал(а) «Спасибо»: 3 раз
Код:

 KeyStore keyStore = KeyStore.getInstance(JCSP.HD_STORE_NAME, JCSP.PROVIDER_NAME);
 keyStore.load(null, null);

 String alias = null;
 Enumeration<String> aliases = keyStore.aliases();
 while (aliases.hasMoreElements()) {
     alias = aliases.nextElement();
 }

 if (alias == null) {
     throw new CryptoProNoInitializedException();
 }

 try {
     KeyStore.ProtectionParameter protectedParam = new KeyStore.PasswordProtection(password);
     JCPPrivateKeyEntry entry = (JCPPrivateKeyEntry) keyStore.getEntry(alias, protectedParam);

     X509Certificate certificate = (X509Certificate) entry.getCertificate();
......


Исключение выбрасывается на строке JCPPrivateKeyEntry entry = (JCPPrivateKeyEntry) keyStore.getEntry(alias, protectedParam);
Код:
NullPointerException:invalid null input
 at ru.CryptoPro.JCP.KeyStore.JCPPrivateKeyEntry.<init>:-1
 at ru.CryptoPro.JCSP.KeyStore.CSPStore.engineGetEntry:-1
 at ru.CryptoPro.JCSP.KeyStore.MetaCSPStore.engineGetEntry:-1
 at ru.CryptoPro.JCSP.KeyStore.JCSPMetaCSPStore.engineGetEntry:-1
 at java.security.KeyStore.getEntry:644
 at mypackage.addContainer:185


Проявляется не всегда, при попытке добавить тестовый сертификат, полученный клиентом. Возможно как-то некорректно был создан контейнер, какие могут быть причины такой ошибки?

Тему с аналогичной проблемой смотрел, но как я понял там дефект проявлялся стабильно.

Отредактировано пользователем 2 октября 2015 г. 18:54:48(UTC)  | Причина: Добавление информации.

Offline Евгений Афанасьев  
#2 Оставлено : 2 октября 2015 г. 19:35:45(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,919
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 688 раз в 649 постах
Здравствуйте.
Автор: Ranzed Перейти к цитате

Проявляется не всегда, при попытке добавить тестовый сертификат, полученный клиентом. Возможно как-то некорректно был создан контейнер, какие могут быть причины такой ошибки?

При попытке добавить или получить? Судя по коду - получить?
Как происходит создание ключевого контейнера? С помощью JCSP? Попробуйте использовать просто PrivateKeyEntry.

Offline Ranzed  
#3 Оставлено : 18 апреля 2016 г. 17:24:02(UTC)
Ranzed

Статус: Участник

Группы: Участники
Зарегистрирован: 29.09.2015(UTC)
Сообщений: 17
Российская Федерация
Откуда: Ижевск

Сказал(а) «Спасибо»: 3 раз
Добрый день!
Прошу прощения за долгий ответ, забыл про эту тему.
Ошибка возникала при попытке получить сертификат, что бы в дальнейшем проверить его отпечаток c проверяемым значением. В случае успешной проверки выполнение операции прекращалось, иначе - контейнер удалялся. Поэтому я написал "при добавлении" сертификата. Ключевая пара и сертификат генерировались при помощи тестового УЦ, ключевой контейнер формировался при помощи КриптоПро CSP (вкладка Сервис->Скопировать... и далее).

Похожая ситуация вновь возникла при той же операции:
Код:

KeyStore keyStore = KeyStore.getInstance(JCSP.HD_STORE_NAME, JCSP.PROVIDER_NAME);
keyStore.load(null, null);

String alias = null;
Enumeration<String> aliases = keyStore.aliases();
while (aliases.hasMoreElements()) {
    alias = aliases.nextElement();
}

try {
    KeyStore.ProtectionParameter protectedParam = new KeyStore.PasswordProtection(password);
    JCPPrivateKeyEntry entry = (JCPPrivateKeyEntry) keyStore.getEntry(alias, protectedParam);

    X509Certificate certificate = (X509Certificate) entry.getCertificate();
....


На keyStore.getEntry() возникает исключение

Код:

UnsupportedOperationException:null
 at ru.CryptoPro.JCSP.KeyStore.CSPStore.engineGetEntry:-1
 at ru.CryptoPro.JCSP.KeyStore.MetaCSPStore.engineGetEntry:-1
 at ru.CryptoPro.JCSP.KeyStore.JCSPMetaCSPStore.engineGetEntry:-1
 at java.security.KeyStore.getEntry:644
 at com.mypackage.addContainer:193

Сейчас развернут собственный УЦ, через него выданы сертификаты, ключевой контейнер формируется таким же образом.
Версия КриптоПро CSP для Android на смартфоне последняя, 4.0.38674

Что подразумевается под использованием PrivateKeyEntry, просто приведение keyStore.getEntry(alias, protectedParam) к PrivateKeyEntry вместо JCPPrivateKeyEntry ?
Проблема же возникает ещё до приведения результата к какому-то классу.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.