Статус: Новичок
Группы: Участники
Зарегистрирован: 02.07.2020(UTC) Сообщений: 5  Сказал(а) «Спасибо»: 2 раз
|
Здравствуйте. Почему при отправке заказа в СУЗ подпись не проходит валидацию?  Oshibka SUZ.png (33kb) загружен 38 раз(а). Cades.zip (5kb) загружен 17 раз(а).Проверка подписи в Крипто АРМ проходит, текст запроса и подпись во вложении. Что не так? Отредактировано пользователем 1 ноября 2020 г. 21:10:07(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,504   Сказал «Спасибо»: 554 раз Поблагодарили: 2250 раз в 1756 постах
|
Здравствуйте.
Какие требования к подписи? Она должна быть в DER или дополнительно закодирована в base64 (как в присланном файле)? |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 02.07.2020(UTC) Сообщений: 5  Сказал(а) «Спасибо»: 2 раз
|
В base 64. Выдержка: Для обеспечения юридической значимости передаваемых сообщений посредством интерфейса API СУЗ 2.0, в заголовок HTTP запроса в СУЗ добавлен опциональный параметр «X-Signature», для включения откреплённой цифровой подписи данных запроса (откреплённая подпись УОТ помещается в HTTP заголовок в параметр «X-Signature» в кодировке Base64). Формат подписи - откреплённая подпись в формате CMS. Синтаксис криптографических сообщений CMS [IETF RFC 5652] используется для цифровой подписи, хэширования, проверки подлинности и шифрования произвольных сообщений. Для CMS используются криптографические алгоритмы согласно стандартам ГОСТ 28147-89, ГОСТ Р 34.10-2012 и ГОСТ Р 34.11-2012
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,504   Сказал «Спасибо»: 554 раз Поблагодарили: 2250 раз в 1756 постах
|
Может при отправке json - что-то меняется? Каким образом отправляете, как кодируете POST? В итоге на сервере его хеш не сходится, с тем, что записан в CMS.
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 02.07.2020(UTC) Сообщений: 5  Сказал(а) «Спасибо»: 2 раз
|
Отправляю из Delphi через sinapse Перед подписанием текст перевожу в UTF8 и сохраняю в файл, файл подписываю
HTTP:=THTTPSend.Create; HTTP.KeepAlive:=true; HTTP.KeepAliveTimeout:=300; HTTP.Protocol:='1.1'; HTTP.MimeType:='application/json'; HTTP.Headers.Add('clientToken: '+edToken.Text); HTTP.Headers.Add('Content-Type: application/json;charset=UTF-8'); // Далее формируем открепленную подпись HTTP.Headers.Add('X-Signature: '+StringPassed); // Это текст из Cades.sig //************************************** FormData:=TStringList.Create; FormData.LoadFromFile(extractfilepath(paramstr(0))+'Cades.json'); // Этот же текст в кодировке UTF8 FormData.SaveToStream(HTTP.Document); FormData.free;
if HTTP.HTTPMethod('POST', 'https://suz2.crpt.ru:443/api/v2/lp/orders?omsId='+edOMS_ID.Text) then begin memo1.Lines.LoadFromStream(HTTP.Document); memo1.Text:= Utf8ToAnsi(memo1.Text); i:= HTTP.ResultCode; end; HTTP.Free;
if i=200 then begin // Успешный ответ lbErr.Caption:= 'Заказ КМ создан успешно'; end
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,504   Сказал «Спасибо»: 554 раз Поблагодарили: 2250 раз в 1756 постах
|
Попробуйте, для самотеста, сдампить запрос на своём web-сервисе\сниффере, извлечь json и ЭП из заголовка - возможно будет ошибка при проверке ЭП.
или до отправки: HTTP.Document - сохранить в файл и проверить ЭП.
|
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602  Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 395 раз в 366 постах
|
Мне кажется, дело в использовании TStringList. Если не ошибаюсь, этот класс печально известен тем, что добавляет переводы строк - символом с кодом 13 и символом с кодом 10. Поэтому данные в документе не равны данным, которые подписаны. Также подпись в заголовках HTTP должна быть кодирована по правилам заголовков, то есть скорее всего надо в base64 + / = обработать специальным образом. Отредактировано пользователем 2 ноября 2020 г. 11:53:39(UTC)
| Причина: Не указана
|
 2 пользователей поблагодарили two_oceans за этот пост.
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,504   Сказал «Спасибо»: 554 раз Поблагодарили: 2250 раз в 1756 постах
|
Автор: ctokas  FormData:=TStringList.Create; FormData.LoadFromFile(extractfilepath(paramstr(0))+'Cades.json'); // Этот же текст в кодировке UTF8 FormData.SaveToStream(HTTP.Document); FormData.free; Использовать сразу загрузку файла, без промежуточного "FormData": HTTP.Document. LoadFromFile(extractfilepath(paramstr(0))+'Cades.json'); |
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
ctokas оставлено 02.11.2020(UTC)
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 02.07.2020(UTC) Сообщений: 5  Сказал(а) «Спасибо»: 2 раз
|
Спасибо, действительно добавляет CR LF  CadesDoc.json (1kb) загружен 14 раз(а).Странно, а в случае отправки документов с прикрепленной подписью на тот же сервер все проходит.
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 02.07.2020(UTC) Сообщений: 5  Сказал(а) «Спасибо»: 2 раз
|
Огромное всем спасибо. Все выходные убил из-за этой мелочи.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close