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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Алексей Черенцов  
#1 Оставлено : 18 февраля 2020 г. 7:26:44(UTC)
Алексей Черенцов

Статус: Активный участник

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

Сказал(а) «Спасибо»: 14 раз
Здравствуйте.
Как можно получить перечень наименований всех ключевых носителей на компьютере? Те носители, которые потом используются для подключения к KeyStore:
KeyStore ks = KeyStore.getInstance(JCP.HD_STORE_NAME, JCP.PROVIDER_NAME);

Понятно, что можно просто последовательно просканировать на предмет доступности JCP.HD_STORE_NAME, JCP.FLOPPY_STORE_NAME, JCP.MEMORY_STORE_NAME. Но как поступать с RutokenStore? Если воткнут один рутокен - он так и определяется как RutokenStore, а если их два, то они в консоли JCP отображаются как RutokenStore_39667565 и RutokenStore_3966B22. В документации этот момент не отображён.
Offline Алексей Черенцов  
#2 Оставлено : 18 февраля 2020 г. 10:58:40(UTC)
Алексей Черенцов

Статус: Активный участник

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

Сказал(а) «Спасибо»: 14 раз
И в догонку ещё один вопрос - можно ли как-то сериализовать полученную с помощью

KeyPair pair = kg.generateKeyPair();

ключевую пару. А то при попытки сделать это у меня вываливается ошибка:

java.io.NotSerializableException
Offline Евгений Афанасьев  
#3 Оставлено : 18 февраля 2020 г. 11:16:37(UTC)
Евгений Афанасьев

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

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

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

Как можно получить перечень наименований всех ключевых носителей на компьютере? Те носители, которые потом используются для подключения к KeyStore:
KeyStore ks = KeyStore.getInstance(JCP.HD_STORE_NAME, JCP.PROVIDER_NAME);
Понятно, что можно просто последовательно просканировать на предмет доступности JCP.HD_STORE_NAME, JCP.FLOPPY_STORE_NAME, JCP.MEMORY_STORE_NAME. Но как поступать с RutokenStore? Если воткнут один рутокен - он так и определяется как RutokenStore, а если их два, то они в консоли JCP отображаются как RutokenStore_39667565 и RutokenStore_3966B22. В документации этот момент не отображён.

Можно перечислить, например, Service и извлечь все алгоритмы в строке, содержащей "KeyStore":
Код:

Provider provider = new JCP();
Set<Provider.Service> services = provider .getServices();
// Список типов контейнеров.
for (Provider.Service service : services) {
  if (service.getType().equalsIgnoreCase("KeyStore")) {
    list.add(service.getAlgorithm());
  } // if
} // for

У рутокена добавляет серийный номер, если их подключено больше одного. Если нет ни одного, то, по идее, RutokeStore пропадет из списка list. В панели JCP на вкладке "Рутокен" вроде была галка, которая позволяла отключить деление рутокенов по серийным номерам, и все они тогда объединялись в один RutokenStore.
Автор: Алексей Черенцов Перейти к цитате

можно ли как-то сериализовать полученную с помощью
KeyPair pair = kg.generateKeyPair();
ключевую пару. А то при попытки сделать это у меня вываливается ошибка:
java.io.NotSerializableException

Нет, извлечь ключи нельзя, экспорт запрещен.

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
Алексей Черенцов оставлено 18.02.2020(UTC)
Offline Евгений Афанасьев  
#4 Оставлено : 18 февраля 2020 г. 11:17:24(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
.

Отредактировано пользователем 18 февраля 2020 г. 11:18:09(UTC)  | Причина: Не указана

Offline Алексей Черенцов  
#5 Оставлено : 18 февраля 2020 г. 12:46:45(UTC)
Алексей Черенцов

Статус: Активный участник

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

Сказал(а) «Спасибо»: 14 раз
Спасибо за оперативный ответ!

Цитата:
Нет, извлечь ключи нельзя, экспорт запрещен.


У нас один из вариантов предусматривает режим работы при отсуствии прямого доступа к Удостоверяющему Центру. И соответственно отправка в Центр запроса на формирования скртификата может проходить не в онлайн режиме, а неким другим способом.
Как я понял из документации, в хранилище я могу сохранить ключевую пару только совместно с сертификатом этой пары.
Возникает вопрос - получается сформированную ключевую пару, на которую отправляется запрос в режиме "офлайн", надо всё это время держать в памяти? Или быть может Вы сможете подсказать другой, какой-нибудь элегантный, способ отложенного запроса сертификата из удостоверяющего центра?
Offline Евгений Афанасьев  
#6 Оставлено : 18 февраля 2020 г. 13:08:36(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
Если у вас долговременная пара, и между моментом создания ключей и выпуском в УЦ сертификата большой промежуток времени, то сохраните в ключевой контейнер закрытый ключ и самоподписанный сертификат (заглушку) с помощью keyStore.setKeyEntry(alias, password, cert_stub), код генерации самоподписанного сертификата есть, кажется, в примере Certificates в userSamples в samples-sources.jar. Когда появится сертификат/цепочка, найдите контейнер и выполните для него keyStore.setCertificateEntry(alias, certs), сертификат в контейнере обновится.

Отредактировано пользователем 18 февраля 2020 г. 13:15:08(UTC)  | Причина: Не указана

Offline Алексей Черенцов  
#7 Оставлено : 20 февраля 2020 г. 5:55:13(UTC)
Алексей Черенцов

Статус: Активный участник

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

Сказал(а) «Спасибо»: 14 раз
Спасибо за наводку на механизм выборки всех типов KeyStore. При этом заметил, что на JCP нет носителя типа FLASH. Причём когда запрашиваешь носители через утилиту csptest ключи на FLASH отображаются.
Код:
$ /opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -verifyc -fqcn
SP (Type:80) v4.0.9019 KC2 Release Ver:4.0.9963 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 31196467
\\.\FLASH\BGPBSig1
\\.\FLASH\BGPBSig2
\\.\FLASH\MGBSign1
.........

В документации тоже ничего про флэшки не нашёл. То есть правильно я понял, что JCP с флэшками не работает? Или существует какой хитрый способ?
Offline Евгений Афанасьев  
#8 Оставлено : 20 февраля 2020 г. 8:18:40(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
В JCP ограничен набор считывателей, среди них нет flash, хотя можно на вкладке "Оборудование" в панели управления в поле буквы Floppy задать букву диска и через FloppyStore получить доступ к содержимому носителя, но это работает, пока буква не изменилась.

Отредактировано пользователем 20 февраля 2020 г. 10:13:53(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
Алексей Черенцов оставлено 21.02.2020(UTC)
Offline Алексей Черенцов  
#9 Оставлено : 21 февраля 2020 г. 7:15:08(UTC)
Алексей Черенцов

Статус: Активный участник

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

Сказал(а) «Спасибо»: 14 раз
Спасибо. Следуйщий вопрос с которым столкнулся - срок действия ключа устанавливается 3 месяца. Изменить этот срок не получается. задаю срок так, как в инструкции написано:

Код:
//Генератор ключевых пар электронной подписи
		KeyPairGenerator kg = KeyPairGenerator.getInstance(JCP.GOST_DH_2012_256_NAME, JCP.PROVIDER_NAME);
		//Указание срока действия ключа
		kg.initialize(new PKUPSignatureSpec(6, Calendar.MONTH));
		//Создание ключевой пары
		KeyPair pair = kg.generateKeyPair();



Может как-то по другому нужно срок действия задавать?
Offline two_oceans  
#10 Оставлено : 21 февраля 2020 г. 7:34:26(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 394 раз в 366 постах
Тут наверно надо уточнить вопрос - срок ключа в контейнере или срок действия в сертификате? Если получаете сертификат в тестовом УЦ, то срок сертификата будет 3 месяца независимо от срока действия ключа в контейнере. Значение в сертификате зависит от настроек УЦ и изменить в большую сторону при генерации ключа не получится. В меньшую возможно выйдет (зависит от УЦ). Зато при генерации Вы сможете менять срок в контейнере. Максимально по законодательству для извлекаемых ключей срок может быть 1 год 3 месяца, но на тестовом УЦ максимум настроен 3 месяца. На аккредитованном УЦ как правило срок будет 12 или 15 месяцев.

Отредактировано пользователем 21 февраля 2020 г. 7:43:38(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.