Статус: Новичок
Группы: Участники
Зарегистрирован: 01.09.2022(UTC) Сообщений: 4
Сказал(а) «Спасибо»: 1 раз
|
Для входа через ЕСИА необходимо в запросе сформировать строку client_secret (она сформирована) и подписать полученную строку с использованием алгоритма подписания data hash с использованием механизмов КриптоПРО CSP и сертификата информационной системы. Используется КриптоПро JCP для работы на стороне сервера и java 11. В наличие есть сертификат и папка с 6 файлами (header.key, masks.key, masks2.key, name.key, primary.key, primary2.key). Насколько я понимаю для подписания строки необходимо сделать следующее: 1. в коде создать HDImageStore 2. положить в него сертификат, задав alias 3. сгенерировать ключевую пару и их тоже положить в контейнер, задав alias Положить и считать сертификат получилось Код:keyStore.setCertificateEntry("test", getCertificate());
X509Certificate certificate = (X509Certificate) keyStore.getCertificate("test");
Certificate[] chain = { certificate };
а вот с ключами возникает проблема: Если для формирования ключа использовать Код:KeyPairGenerator keyGen= KeyPairGenerator.getInstance("GOST3410DHEPH");
то возникает ошибка GOST3410DHEPH KeyPairGenerator not available Если же попробовать сформировать ключ иначе, то требуется участие пользователя и положить в контейнер ключ не удается Код:KeyPairGenerator keyGen = KeyPairGenerator.getInstance(JCP.GOST_DH_2012_256_NAME);
KeyPair pair = keyGen.generateKeyPair();
keyStore.setKeyEntry("private", pair.getPrivate(), null, chain);
PrivateKey key = (PrivateKey) keyStore.getKey("private", null);
Необходимо сформировать ключевую пару без биодатчика и положить в контейнер для дальшейшего использование Как это сделать?
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 395 раз в 366 постах
|
Добрый день. Обычно сначала генерируют ключевую пару, создают запрос на сертификат, УЦ выдает сертификат по запросу, потом подписывают закрытым ключом, соответствующим открытому ключу в сертификате. Иногда все операции делают в УЦ (пользователь только приносит носитель и бумажки), иногда используют тестовый УЦ КриптоПро. Алгоритмы подобраны специально так, чтобы по открытому ключу было очень сложно подобрать закрытый ключ. Поэтому если Вы получили только сертификат, он будет бесполезен без соответствующего закрытого ключа. Сгенерируете еще пару - идете за новым сертификатом. Поэтому очень интересно, какой сертификат Вы считали, если у Вас еще нет ключевой пары? Хотя - у Вас же есть папка с 6 файлами - это и есть контейнер с закрытым ключом. Если речь про Linux ее просто надо поместить туда где HDIMAGE ищет контейнеры и JCP его увидит. Дальше надо просто указывать правильный alias.
Сначала все подготавливаете с ключевой парой и сертификатом, потом лезете в JCP. Как правило УЦ сейчас предоставляют свои программки/плагины/веб-интерфейс для всего этого, прикладной программе не обязательно вникать в генерацию. Вопрос вообще имеет смысл только если Вы хотите своим пользователям сгенерировать "мульен" сертификатов или генерируете один ключ для шифрования каждого файла (сессионный или эфемерный), а файлов много. Для конкретно интеграции с ЕСИА этого не требуется.
Скорее всего, Вам нужно просто или получить ключевую пару + сертификат от заказчика интеграции или сделать все на тестовом УЦ (на время разработки).
По существу же вопроса - если нельзя использовать биологический ДСЧ, на компьютере/сервере должен быть аппаратный ДСЧ, например, плата Соболь или подобная. Промежуточный вариант - использовать гамму, но это гораздо сложнее. Суть в том, что сначала с био ДСЧ или аппаратного ДСЧ нарабатываются данные, переносятся на другой компьютер, потом наработанные данные используются для выработки ключевой информации и прочего. Минус в том, что наработка конечна и если ключи генерируются часто, то "не набегаешься" переносить информацию.
Отредактировано пользователем 5 сентября 2022 г. 11:41:21(UTC)
| Причина: Не указана
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 01.09.2022(UTC) Сообщений: 4
Сказал(а) «Спасибо»: 1 раз
|
Сертификат получен из CSP, как и папка с 6 файлами. Этот сертификат выгружается в ЕСИА в личный кабинет, чтобы ЕСИА смог узнать, что мы - это мы? т.е. он может быть только один. Локально установлен Windows Когда указываю конкретный путь к контейнеру, где эти файлы лежат и пытаюсь получить вообще все alias, возвращается null. Код:Enumeration aliases = keyStore.aliases();
Поэтому вообще не могу понять как из 6 файлов получить закрытый ключ, не знаю его alias и не зная как его задать.
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 395 раз в 366 постах
|
Ну вот теперь мы говорим об одном. Путь указываете до самой папки с 6 файлами? У меня предположение, что это надо указывать на 1 уровень выше, так как в хранилище может же быть несколько контейнеров? Вообще, должна быть "стандартная" папка для считывателя HDIMAGE (или как называется в CSP 5.0 на Windows и CSP 4.0/5.0 на Linux - "считыватель Директория"). Если в нее положить эту папку с 6 файликами (например, с помощью CSP 5.0 скопировать контейнер в считыватель Директория), то ключи должно быть видно и в JCP и в JCSP и в CSP, далее смотрите через графическую панель JCP какой alias. https://www.cryptopro.ru...&m=133798#post133798https://www.cryptopro.ru...&m=134645#post134645https://www.cryptopro.ru...&m=134444#post134444
|
1 пользователь поблагодарил two_oceans за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 01.09.2022(UTC) Сообщений: 4
Сказал(а) «Спасибо»: 1 раз
|
Спасибо, все сработало. Действительно проблема была в пути к контейнеру
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close