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

Уведомление

Icon
Error

2 Страницы<12
Опции
К последнему сообщению К первому непрочитанному
Offline Артём С  
#11 Оставлено : 13 февраля 2020 г. 13:56:42(UTC)
Артём С

Статус: Новичок

Группы: Участники
Зарегистрирован: 26.02.2019(UTC)
Сообщений: 8

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 1 раз в 1 постах
Автор: test.user Перейти к цитате
Ребята, если все таки справились с проблемой, поделитесь плз решением) Чувствую скоро многие начнут переходить на ГОСТ12 вследствие отключения 2001 в первом квартале 2020.
Вопрос конечно относится к ЕСИА, а не к КриптоПро, но всеже по тепе топика: Я правильно понимаю что при авторизации на ESIA единственное что нужно подписать и перевести в Base64 safe url - это client_secret? Если я правильно понял, все запросы идут без шифрования. Т.е. единственное различие с авторизацией по RSA - это то что подпись client_secret будет осуществляться с помощью сертификатов и ключей GOST2012?

да, всё верно
отпишусь если доделаю решение на Java

thanks 1 пользователь поблагодарил Артём С за этот пост.
test.user оставлено 13.02.2020(UTC)
Offline test.user  
#12 Оставлено : 18 февраля 2020 г. 12:40:33(UTC)
test.user

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

Группы: Участники
Зарегистрирован: 11.12.2019(UTC)
Сообщений: 30

Сказал(а) «Спасибо»: 11 раз
А подскажите, пожалуйста, у меня такая же проблема с unauthorized_client, но в логах вижу более конкретную ошибку:
ERROR ru.gosuslugi.esia.core.api.security.PKCS7SignatureService - Signature validation error: Unknown signature type requested: 1.2.643.7.1.1.6.1WITH1.2.643.7.1.1.6.1.
2020-02-16 21:56:15,697 [tomcat-exec-26] ERROR ru.gosuslugi.esia.core.api.security.oauth2.SignedClientSecret - Error while verifying certificate
2020-02-16 21:56:15,697 [tomcat-exec-26] ERROR ru.atc.esia.aas.oauth2.server.filter.AbstractOAuth2Filter - Request: The signature in client secret parameter was not verified.

Это значит, что ЕСИА не может прочитать подпись, которую я передаю? Может быть они используют более старую версию jcp? Как вообще в таком случае договориться с ЕСИА, какие параметры подписи нужно использовать? Можно ли как то проверить корректность подписи локально?
Благодарен за любую информацию.
Offline test.user  
#13 Оставлено : 18 февраля 2020 г. 15:20:30(UTC)
test.user

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

Группы: Участники
Зарегистрирован: 11.12.2019(UTC)
Сообщений: 30

Сказал(а) «Спасибо»: 11 раз
Вроде заработало с кодом из этой темы:
https://www.cryptopro.ru...aspx?g=posts&t=16526
также есть ответ по моему вопросу тут:
https://www.cryptopro.ru...&m=112787#post112787
Offline Юсупов К.И.  
#14 Оставлено : 21 августа 2020 г. 20:01:54(UTC)
Юсупов К.И.

Статус: Новичок

Группы: Участники
Зарегистрирован: 20.06.2018(UTC)
Сообщений: 1

Здравствуйте! Столкнулись с аналогичной ошибкой (ESIA-007005) при переходе с использования сертификата RSA на ГОСТ-2012.
Вот такой код успешно использовался ранее:

Код:
var content = Encoding.UTF8.GetBytes(dataToSign);
var contentInfo = new ContentInfo(content);
var signed = new SignedCms(contentInfo, true);
var signer = new CmsSigner(cert);
signed.ComputeSignature(signer); 
var secret = signed.Encode().ToBase64().UrlSafeEncode();


Пробовали разные варианты signer.IncludeOption и signer.SignerIdentifierType - ошибка всегда одинаковая.
Возможно, мы упускаем какую-то деталь и кто-то здесь уже нашел рабочее решение на .NET.
Связываться с вызовом cryptcp -signf не хотелось бы...
Offline kirill.ponosov  
#15 Оставлено : 3 марта 2021 г. 12:02:21(UTC)
kirill.ponosov

Статус: Новичок

Группы: Участники
Зарегистрирован: 26.02.2021(UTC)
Сообщений: 2

Автор: vanesrilax Перейти к цитате
Решил проблему так:
Поднял виртуальную тачку под Ubuntu. На нее накатил КриптоПРО CSP 5, под линукс в составе CSP идет утилита cryptcp.
Далее вставил фшелку в сервер и примонтировал ее, кто не знает как сделать, есть тут
Потом по этой статье копирую контейнер на жесткий диск и ставлю сертификат в хранилище uMy.
Далее пишем программу, алгоритм простой:
записываем строку для подписи в файл "message"
вызываем утилиту cryptcp с параметрами, она считывает строку из файла "message" подписывает ее и записывает данные в другой файл "message.sgn" в формате BASE64.
вот сама команда:
Код:
cryptcp -signf -dir /var/www/html -strict -cert -detached -thumbprint <отпечаток сертификата который Вы импортировали в хранилище uMy> /tmp/message

Если что то не понятно по параметрам, то вот документация
Далее в программе считываем данные из файла "message.sgn", делаем из них base64 url safe. Для тех кто не знает что это такое, то вот алгоритм на PHP:
Код:

$file = file_get_contents("message.sgn"); //считываем данные из файла в переменную
$file_url_safe = str_replace(array('+','/','='),array('-','_',''),$file); // преобразуем в base64 url safe
$file_url_safe = str_replace("\n", "", $file_url_safe); // делаем все в одну строку

Далее подставляем эту строку в client_secret и будем Вам счастье!
P.S.
Важно вызывать утилиту cryptcp от того пользователя от которого вы импортировали сертификат из контейнера.
Решение может далеко не самое удачное, но оно работает.


Приветствую коллеги. Может быть кто-то сможет помочь?
Подписываю запрос к ЕСИА, по описанному выше рецепту, но получаю ошибку
ESIA-007005 "Система-клиент не имеет права запрашивать получение маркера доступа таким методом".
На сколько я понял, такая ошибка может возникать если неправильно сформирована подпись.

Моё отличие от описанного алгоритма в том, что у меня нет физической флешки.
Заказчик с помощью КриптоПро CSP выгрузил мне файл в фомате .pfx.
Я закинул его в убунту и загрузил командой
Код:

certmgr -install -store uMy -file "<file_name>.pfx" -pfx -silent -keep_exportable -pin <password>


certmgr -list

В ЛК госуслуг у меня указан тип шифрования GOST3410_2012_256.
Через cryptcp -signf --help увидел, что есть такой параметр как -hashAlg

Код:
-hashAlg      specify hash algorithm
 OID           hash algorithm OID: 1.2.643.2.2.9 for GOST R 34.11-94
               1.2.643.7.1.1.2.2 for GOST R 34.11-2012 256 bit
               1.2.643.7.1.1.2.3 for GOST R 34.11-2012 512 bit

Пробовал добавлять его в команду создания подписи

cryptcp -signf -der -dir /tmp -strict -cert --hashAlg 1.2.643.7.1.1.2.2 -detached -thumbprint <thumbprint> /tmp/message';

Но результат тот же: ESIA-007005
Offline rafaelkhasanov  
#16 Оставлено : 4 мая 2021 г. 20:49:34(UTC)
rafaelkhasanov

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

Группы: Участники
Зарегистрирован: 29.04.2021(UTC)
Сообщений: 15

Код:
var args = $"-signf -mMy -dir {Path.GetDirectoryName(dataFilePath)} -der -strict -cert -detached -thumbprint {thumbprint} {dataFilePath} -pin {password}";


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