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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Анатолий Широков  
#1 Оставлено : 22 января 2025 г. 17:52:13(UTC)
Анатолий Широков

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

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

Сказал «Спасибо»: 14 раз
Добрый день!

Хочу изучить вопрос программного доступа к HSM из Java. Этот вопрос где-то освещается в документации?

Целевая ОС будет Астра, на ней будет работать сервис на базе Axiom JDK 17, которому необходимо использовать HSM в рамках создания новый ключевых контейнеров, удаление старых ключевых контейнеров, подписания.

Какие продукты КрипПро мне потребуются? Достаточно будет JCP или надо будет JCSP + CSP?

Заранее спасибо!

Отредактировано пользователем 22 января 2025 г. 18:48:03(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#2 Оставлено : 23 января 2025 г. 17:49:58(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 738 раз в 696 постах
Добрый день.
В документации - нет, но принцип работы примерно тот же, что и с "HDIMAGE".
Работа с HSM возможна только с помощью CSP R2 и выше, т.е. JCSP. В JCSP доступ к HSM осуществляется через "HSMDB" хранилище (KeyStore.getInstance("HSMDB")). Оно будет доступно после настройки HSM-клиента.
Поддержки HSM в JCP нет.

Отредактировано пользователем 23 января 2025 г. 17:50:37(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
Анатолий Широков оставлено 23.01.2025(UTC)
Offline Анатолий Широков  
#3 Оставлено : 18 сентября 2025 г. 18:46:23(UTC)
Анатолий Широков

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

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

Сказал «Спасибо»: 14 раз
А создание ключевой пары как в этом случае осуществляется применительно к Java и HSM?

HSM же внутри себя должен создать ключевую пару. А в Java мы сначала создаем KeyPairGenerator, потом KeyPair, и только потом записываем в KeyStore entry.
Offline Евгений Афанасьев  
#4 Оставлено : 19 сентября 2025 г. 11:04:27(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 738 раз в 696 постах
Здравствуйте.

В KeyPairGenerator#initialize можно передать объект NameAlgIdSpec (для ГОСТ ключа) или NameAlgIdSpecForeign (для иностр. ключа) с указанием fqcn-имени контейнера ("\\\\.\\HSMDB\\container") и PasswordParamsSpec с указанием пароля. Тогда ключевой контейнер будет создан по указанному пути.

Отредактировано пользователем 19 сентября 2025 г. 16:27:33(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
Анатолий Широков оставлено 19.09.2025(UTC)
Offline Анатолий Широков  
#5 Оставлено : 19 сентября 2025 г. 11:14:00(UTC)
Анатолий Широков

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

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

Сказал «Спасибо»: 14 раз
Евгений, спасибо большое!
Offline Анатолий Широков  
#6 Оставлено : 30 сентября 2025 г. 12:26:12(UTC)
Анатолий Широков

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

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

Сказал «Спасибо»: 14 раз
Еще хотел бы уточнить best практики при работе с HSM в Java. Есть многопоточное приложение обслуживающее запросы клиентов в том числе на создание ключевой пары и связывание сертификата с ключом.

Я на каждый запрос создаю новое ключевое хранилище

Код:
KeyStore keyStore = KeyStore.getInstance("HSMDB", "JSCP");
keyStore.load(null, null);


Но иногда между последовательными запросами в сценарии, когда один запрос создает ключевую пару, а второй связывает с ней сертификат выскакивает ошибка

Код:
java.security.KeyStoreException: ru.CryptoPro.JCP.KeyStore.NoSuchKeyException
        at ru.CryptoPro.JCSP.KeyStore.CSPStore.a(Unknown Source) ~[JCSP-5.0.48378-A.jar!/:na]
        at ru.CryptoPro.JCSP.KeyStore.CSPStore.engineSetCertificateEntry(Unknown Source) ~[JCSP-5.0.48378-A.jar!/:na]
        at ru.CryptoPro.JCSP.KeyStore.MetaCSPStore.engineSetCertificateEntry(Unknown Source) ~[JCSP-5.0.48378-A.jar!/:na]
        at java.base/java.security.KeyStore.setCertificateEntry(KeyStore.java:1228) ~[na:na]


При этом если через какое-то время сделать запрос на перечисление контейнеров HSM keyStore.aliases() я вижу этот контейнер.

В чем здесь может быть дело? При возникновении такой ошибки пытаться делать retry в получении ключевого хранилища?

Отредактировано пользователем 30 сентября 2025 г. 12:29:08(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#7 Оставлено : 1 октября 2025 г. 18:42:01(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 738 раз в 696 постах
Здравствуйте.
1. Создавать каждый раз KeyStore не обязательно.
2. "когда один запрос создает ключевую пару, а второй связывает с ней сертификат выскакивает ошибка" - по ошибке NoSuchKeyException можно только предположить, что сертификат не подходит ключу.

Отредактировано пользователем 2 октября 2025 г. 10:19:14(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
Анатолий Широков оставлено 02.10.2025(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.