Задать вопрос
@oculos

Как подписать запрос к ЕСИА с помощью сертификата от КриптоПро?

Всем привет.
Пытаюсь сформировать запрос на код авторизации.
Может быть кто-то сможет подсказать, что я делаю не так.

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

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


Строку, которую нужно подписать (`$params['scope'].$params['timestamp'].$params['client_id'].$params['state']`) записал в файл /tmp/message и подписал файл вот такой командой

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


В итоге получил файл tmp/message.sgn

Читаю этот файл и кодирую в base64 url safe

$signature = file_get_contents("tmp/message.sgn");

$encoded = base64_encode($signature);
$encoded = str_replace(array('+','/','='),array('-','_',''),$encoded);
$encoded = str_replace(PHP_EOL, "", $encoded);


Полученную строку подставляю в качестве get параметра client_secret в запрос.

В итоге получаю ошибку
ESIA-007005 "Система-клиент не имеет права запрашивать получение маркера доступа таким методом"

Текст ошибки намекает нам, что нужно как-то запросить больше прав, однако на нескольких форумах я видел сообщения, что удавалось победить эту ошибку подправив механизм формирования подписи
  • Вопрос задан
  • 1477 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы