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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Ega78  
#1 Оставлено : 13 марта 2023 г. 12:06:59(UTC)
Ega78

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

Группы: Участники
Зарегистрирован: 13.03.2023(UTC)
Сообщений: 5
Российская Федерация

Здравствуйте.

Мы пытаемся интегрировать серсисы ЕСИА в наше приложение. Первым шагом необходимо получить авторизационный код с помощью вот этого endpoint https://esia-portal1.tes...ugi.ru/aas/oauth2/v2/ac. Для этого необходимо сформировать и подписать client secret. Вопрос - как правильно подписать его в Linux?
Мы развернули КриптоПро 5 в Linux, добавили в него ключи, необходимые для подписи ЕСИА и сохранили client secret в файл secret.txt для подписания. Подпись генерит вот такая команда:
Код:
/opt/cprocsp/bin/amd64/cryptcp -signf -nocert -strict -detached -pin {EsiaPrivateKeysContainerPassword} -thumbprint {EsiaPublicCertificateThumbprint} -hashalg 1.2.643.7.1.1.2.2 secret.txt

Подписанный таким образом и преобразованный в Base64Url secret ЕСИА не принимает, говорит ошибка "ESIA-007053: AuthErrorEnum.clientSecretWrong".
Кто-нибудь сталкивался с такими проблемами? Кто-нибудь может подтвердить, что команда правильная? Может опций каких-то не хватает? Может подписывать надо в два этапа - отдельной командой посчитать hash и потом отдельно его подписать?
Буду рад любой информации.
Online Андрей *  
#2 Оставлено : 13 марта 2023 г. 13:44:30(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,701
Мужчина
Российская Федерация

Сказал «Спасибо»: 500 раз
Поблагодарили: 2049 раз в 1589 постах
Здравствуйте.
Приложите требования к ЭП.
Сам txt верно сформирован?
Техническую поддержку оказываем тут
Наша база знаний
Offline Ega78  
#3 Оставлено : 13 марта 2023 г. 14:21:35(UTC)
Ega78

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

Группы: Участники
Зарегистрирован: 13.03.2023(UTC)
Сообщений: 5
Российская Федерация

Client secret сформирован на основании документации от ЕСИА. У нас получается вот такой - "TESTopenid2023.03.13 14:12:43 +0300b962359f-e5c4-a5f7-d2c4-7cc0d3a8c2d2https://www.test.ru" (реальные client id и site я заменил на test).
Требования к ЭП - это что такое?
Online Андрей *  
#4 Оставлено : 13 марта 2023 г. 14:55:14(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,701
Мужчина
Российская Федерация

Сказал «Спасибо»: 500 раз
Поблагодарили: 2049 раз в 1589 постах
Автор: Ega78 Перейти к цитате
Client secret сформирован на основании документации от ЕСИА. У нас получается вот такой - "TESTopenid2023.03.13 14:12:43 +0300b962359f-e5c4-a5f7-d2c4-7cc0d3a8c2d2https://www.test.ru" (реальные client id и site я заменил на test).
Требования к ЭП - это что такое?


это то, что ожидается после подписания через API\утилиту.

Цитата:

-signf = подписать
-nocert = без включения сертификата подписанта
-strict = однозначное der кодирование, вместо ber
-detached = отсоединенная ЭП
-hashalg 1.2.643.7.1.1.2.2 = Функция хэширования ГОСТ Р 34.11-2012, длина выхода 256 бит


эти параметры правильные? Соответствуют требованиям ЕСИА?
Техническую поддержку оказываем тут
Наша база знаний
Offline Ega78  
#5 Оставлено : 13 марта 2023 г. 15:32:56(UTC)
Ega78

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

Группы: Участники
Зарегистрирован: 13.03.2023(UTC)
Сообщений: 5
Российская Федерация

Так это как раз то, что я пытаюсь выяснить. Есть вот этот https://digital.gov.ru/u...niyuesiav313_VaCOzE9.pdf талмуд. В пункте В.2.3 говорится следующее:
Цитата:
Порядок формирования <client_secret>:
1) конкретизировать вышеуказанные параметры (порядок важен!). Пример
строки:
TESTAPPLICATIONopenidorg_inf2021.11.10 12:28:46 +0300bbf0aef5–5237–41bc–8cba–
291e29a3ade8https://test.application.../auth/api/v1/esia/return
2) подписать полученную строку с использованием алгоритма подписания data
hash;
3) с использованием механизмов сертифицированных Российских
криптографических средств защиты информации и сертификата
информационной системы67;
4) закодировать полученное значение в base64 url safe.
Используемый для проверки подписи сертификат должен быть предварительно
зарегистрирован в ЕСИА и привязан к УЗ системы-клиента в ЕСИА. ЕСИА использует
сертификаты в формате X.509 и взаимодействует с алгоритмами формирования

66 Адрес в тестовой среде: https://esia-portal1.tes...ugi.ru/aas/oauth2/v2/ac.
67 Некоторые алгоритмы требуют развернуть зеркально, побайтово, полученную подпись.
440
электронной подписи ГОСТ Р 34.10-2012 и криптографического хэширования
ГОСТ Р 34.11-2012;

В следующем пункте ещё чуть-чуть:
Цитата:
 <client_secret> – подпись запроса в формате PKCS#7 detached signature
в кодировке UTF-8 от значений семи параметров HTTP-запроса: scope,
scope_org, timestamp, clientId, state (без разделителей), redirect_uri, code.
<client_secret> должен быть закодирован в формате base64 url safe.
Используемый
для проверки подписи сертификат должен быть предварительно
зарегистрирован в ЕСИА и привязан к УЗ системы-клиента в ЕСИА. ЕСИА
использует сертификаты в формате X.509 и взаимодействует с алгоритмами
формирования электронной подписи ГОСТ Р 34.10-2012
и криптографического хэширования ГОСТ Р 34.11-2012;


И всё, 500 с лишком страниц, а читать нечего.
Люди, которые сталкивалиись с этой темой, помогите. Может быть кто-то где-то находил эти требования? Очевидно, что это должна быть detached подпись, а дальше? Формат - DER или BER? Сертификат надо включать или нет? Надо явно указывать алгоритм хеширования или никакого хеширования вообще не надо?
Online Андрей *  
#6 Оставлено : 13 марта 2023 г. 15:58:07(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,701
Мужчина
Российская Федерация

Сказал «Спасибо»: 500 раз
Поблагодарили: 2049 раз в 1589 постах
Автор: Ega78 Перейти к цитате
Так это как раз то, что я пытаюсь выяснить. Есть вот этот https://digital.gov.ru/u...niyuesiav313_VaCOzE9.pdf талмуд. В пункте В.2.3 говорится следующее:
Цитата:
Порядок формирования <client_secret>:
1) конкретизировать вышеуказанные параметры (порядок важен!). Пример
строки:
TESTAPPLICATIONopenidorg_inf2021.11.10 12:28:46 +0300bbf0aef5–5237–41bc–8cba–
291e29a3ade8https://test.application.../auth/api/v1/esia/return
2) подписать полученную строку с использованием алгоритма подписания data
hash;
3) с использованием механизмов сертифицированных Российских
криптографических средств защиты информации и сертификата
информационной системы67;
4) закодировать полученное значение в base64 url safe.
Используемый для проверки подписи сертификат должен быть предварительно
зарегистрирован в ЕСИА и привязан к УЗ системы-клиента в ЕСИА. ЕСИА использует
сертификаты в формате X.509 и взаимодействует с алгоритмами формирования

66 Адрес в тестовой среде: https://esia-portal1.tes...ugi.ru/aas/oauth2/v2/ac.
67 Некоторые алгоритмы требуют развернуть зеркально, побайтово, полученную подпись.
440
электронной подписи ГОСТ Р 34.10-2012 и криптографического хэширования
ГОСТ Р 34.11-2012;

В следующем пункте ещё чуть-чуть:
Цитата:
 <client_secret> – подпись запроса в формате PKCS#7 detached signature
в кодировке UTF-8 от значений семи параметров HTTP-запроса: scope,
scope_org, timestamp, clientId, state (без разделителей), redirect_uri, code.
<client_secret> должен быть закодирован в формате base64 url safe.
Используемый
для проверки подписи сертификат должен быть предварительно
зарегистрирован в ЕСИА и привязан к УЗ системы-клиента в ЕСИА. ЕСИА
использует сертификаты в формате X.509 и взаимодействует с алгоритмами
формирования электронной подписи ГОСТ Р 34.10-2012
и криптографического хэширования ГОСТ Р 34.11-2012;


И всё, 500 с лишком страниц, а читать нечего.
Люди, которые сталкивалиись с этой темой, помогите. Может быть кто-то где-то находил эти требования? Очевидно, что это должна быть detached подпись, а дальше? Формат - DER или BER? Сертификат надо включать или нет? Надо явно указывать алгоритм хеширования или никакого хеширования вообще не надо?



начать с удаления
-detached = отсоединенная ЭП
и -nocert

Техническую поддержку оказываем тут
Наша база знаний
Online Андрей *  
#7 Оставлено : 13 марта 2023 г. 16:15:34(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,701
Мужчина
Российская Федерация

Сказал «Спасибо»: 500 раз
Поблагодарили: 2049 раз в 1589 постах
Автор: Ega78 Перейти к цитате

Подписанный таким образом и преобразованный в Base64Url secret ЕСИА не принимает, говорит ошибка "ESIA-007053: AuthErrorEnum.clientSecretWrong".


т.е. дважды кодирование произошло?
от утилиты получили уже в base64, а потом еще раз в Base64Url?
Техническую поддержку оказываем тут
Наша база знаний
Offline Ega78  
#8 Оставлено : 13 марта 2023 г. 16:26:11(UTC)
Ega78

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

Группы: Участники
Зарегистрирован: 13.03.2023(UTC)
Сообщений: 5
Российская Федерация

Автор: Андрей * Перейти к цитате
Автор: Ega78 Перейти к цитате

Подписанный таким образом и преобразованный в Base64Url secret ЕСИА не принимает, говорит ошибка "ESIA-007053: AuthErrorEnum.clientSecretWrong".


т.е. дважды кодирование произошло?
от утилиты получили уже в base64, а потом еще раз в Base64Url?


Нет, тут всё нормально. Base64 кодировка была корректно конвертирована в Base64Url.
Online Андрей *  
#9 Оставлено : 13 марта 2023 г. 17:19:14(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,701
Мужчина
Российская Федерация

Сказал «Спасибо»: 500 раз
Поблагодарили: 2049 раз в 1589 постах
Автор: Ega78 Перейти к цитате
Автор: Андрей * Перейти к цитате
Автор: Ega78 Перейти к цитате

Подписанный таким образом и преобразованный в Base64Url secret ЕСИА не принимает, говорит ошибка "ESIA-007053: AuthErrorEnum.clientSecretWrong".


т.е. дважды кодирование произошло?
от утилиты получили уже в base64, а потом еще раз в Base64Url?


Нет, тут всё нормально. Base64 кодировка была корректно конвертирована в Base64Url.


а где написано, что сервис ждёт после Base64Url опять в base64? Хотя ошибка, вероятно, другая бы была...
Техническую поддержку оказываем тут
Наша база знаний
Offline Ega78  
#10 Оставлено : 13 марта 2023 г. 17:37:53(UTC)
Ega78

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

Группы: Участники
Зарегистрирован: 13.03.2023(UTC)
Сообщений: 5
Российская Федерация

Автор: Андрей * Перейти к цитате
Автор: Ega78 Перейти к цитате
Автор: Андрей * Перейти к цитате
Автор: Ega78 Перейти к цитате

Подписанный таким образом и преобразованный в Base64Url secret ЕСИА не принимает, говорит ошибка "ESIA-007053: AuthErrorEnum.clientSecretWrong".


т.е. дважды кодирование произошло?
от утилиты получили уже в base64, а потом еще раз в Base64Url?


Нет, тут всё нормально. Base64 кодировка была корректно конвертирована в Base64Url.


а где написано, что сервис ждёт после Base64Url опять в base64? Хотя ошибка, вероятно, другая бы была...


Base64 и Base64Url - это одна и та же кодировка, только в Base64Url символы типа '/', ':' заменены на допустимые в url '_', '-' и т.д.
То, что client secret должен передаваться в Base64Url кодировке написано в документации ЕСИА.

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