Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2019(UTC) Сообщений: 33   Откуда: Санкт-Петербург Сказал «Спасибо»: 14 раз
|
Добрый день! Хочу изучить вопрос программного доступа к HSM из Java. Этот вопрос где-то освещается в документации? Целевая ОС будет Астра, на ней будет работать сервис на базе Axiom JDK 17, которому необходимо использовать HSM в рамках создания новый ключевых контейнеров, удаление старых ключевых контейнеров, подписания. Какие продукты КрипПро мне потребуются? Достаточно будет JCP или надо будет JCSP + CSP? Заранее спасибо! Отредактировано пользователем 22 января 2025 г. 18:48:03(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,061  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 737 раз в 695 постах
|
Добрый день. В документации - нет, но принцип работы примерно тот же, что и с "HDIMAGE". Работа с HSM возможна только с помощью CSP R2 и выше, т.е. JCSP. В JCSP доступ к HSM осуществляется через "HSMDB" хранилище (KeyStore.getInstance("HSMDB")). Оно будет доступно после настройки HSM-клиента. Поддержки HSM в JCP нет. Отредактировано пользователем 23 января 2025 г. 17:50:37(UTC)
| Причина: Не указана |
|
 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2019(UTC) Сообщений: 33   Откуда: Санкт-Петербург Сказал «Спасибо»: 14 раз
|
А создание ключевой пары как в этом случае осуществляется применительно к Java и HSM?
HSM же внутри себя должен создать ключевую пару. А в Java мы сначала создаем KeyPairGenerator, потом KeyPair, и только потом записываем в KeyStore entry.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,061  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 737 раз в 695 постах
|
Здравствуйте. В KeyPairGenerator#initialize можно передать объект NameAlgIdSpec (для ГОСТ ключа) или NameAlgIdSpecForeign (для иностр. ключа) с указанием fqcn-имени контейнера ("\\\\.\\HSMDB\\container") и PasswordParamsSpec с указанием пароля. Тогда ключевой контейнер будет создан по указанному пути. Отредактировано пользователем 19 сентября 2025 г. 16:27:33(UTC)
| Причина: Не указана |
|
 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2019(UTC) Сообщений: 33   Откуда: Санкт-Петербург Сказал «Спасибо»: 14 раз
|
Евгений, спасибо большое!
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 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)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,061  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 737 раз в 695 постах
|
Здравствуйте. 1. Создавать каждый раз KeyStore не обязательно. 2. "когда один запрос создает ключевую пару, а второй связывает с ней сертификат выскакивает ошибка" - по ошибке NoSuchKeyException можно только предположить, что сертификат не подходит ключу. Отредактировано пользователем 2 октября 2025 г. 10:19:14(UTC)
| Причина: Не указана |
|
 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close