Статус: Новичок
Группы: Участники
Зарегистрирован: 26.02.2019(UTC) Сообщений: 8
Сказал(а) «Спасибо»: 2 раз Поблагодарили: 1 раз в 1 постах
|
Автор: test.user Ребята, если все таки справились с проблемой, поделитесь плз решением) Чувствую скоро многие начнут переходить на ГОСТ12 вследствие отключения 2001 в первом квартале 2020. Вопрос конечно относится к ЕСИА, а не к КриптоПро, но всеже по тепе топика: Я правильно понимаю что при авторизации на ESIA единственное что нужно подписать и перевести в Base64 safe url - это client_secret? Если я правильно понял, все запросы идут без шифрования. Т.е. единственное различие с авторизацией по RSA - это то что подпись client_secret будет осуществляться с помощью сертификатов и ключей GOST2012? да, всё верно отпишусь если доделаю решение на Java
|
1 пользователь поблагодарил Артём С за этот пост.
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 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? Как вообще в таком случае договориться с ЕСИА, какие параметры подписи нужно использовать? Можно ли как то проверить корректность подписи локально? Благодарен за любую информацию.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 11.12.2019(UTC) Сообщений: 30
Сказал(а) «Спасибо»: 11 раз
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 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 не хотелось бы...
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 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>
В ЛК госуслуг у меня указан тип шифрования 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
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 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.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close