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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline ctokas  
#1 Оставлено : 1 ноября 2020 г. 20:07:19(UTC)
ctokas

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

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

Сказал(а) «Спасибо»: 2 раз
Здравствуйте.
Почему при отправке заказа в СУЗ подпись не проходит валидацию?

Oshibka SUZ.png (33kb) загружен 33 раз(а). Cades.zip (5kb) загружен 14 раз(а).

Проверка подписи в Крипто АРМ проходит, текст запроса и подпись во вложении.
Что не так?

Отредактировано пользователем 1 ноября 2020 г. 21:10:07(UTC)  | Причина: Не указана

Offline Андрей *  
#2 Оставлено : 1 ноября 2020 г. 23:04:41(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2034 раз в 1578 постах
Здравствуйте.

Какие требования к подписи?
Она должна быть в DER или дополнительно закодирована в base64 (как в присланном файле)?
Техническую поддержку оказываем тут
Наша база знаний
Offline ctokas  
#3 Оставлено : 2 ноября 2020 г. 8:02:16(UTC)
ctokas

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

Группы: Участники
Зарегистрирован: 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
Offline Андрей *  
#4 Оставлено : 2 ноября 2020 г. 11:01:00(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2034 раз в 1578 постах
Может при отправке json - что-то меняется? Каким образом отправляете, как кодируете POST?
В итоге на сервере его хеш не сходится, с тем, что записан в CMS.

Техническую поддержку оказываем тут
Наша база знаний
Offline ctokas  
#5 Оставлено : 2 ноября 2020 г. 11:13:34(UTC)
ctokas

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

Группы: Участники
Зарегистрирован: 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
Offline Андрей *  
#6 Оставлено : 2 ноября 2020 г. 11:21:49(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2034 раз в 1578 постах
Попробуйте, для самотеста, сдампить запрос на своём web-сервисе\сниффере,
извлечь json и ЭП из заголовка - возможно будет ошибка при проверке ЭП.

или до отправки:
HTTP.Document - сохранить в файл и проверить ЭП.
Техническую поддержку оказываем тут
Наша база знаний
Offline two_oceans  
#7 Оставлено : 2 ноября 2020 г. 11:49:05(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Мне кажется, дело в использовании TStringList. Если не ошибаюсь, этот класс печально известен тем, что добавляет переводы строк - символом с кодом 13 и символом с кодом 10. Поэтому данные в документе не равны данным, которые подписаны.

Также подпись в заголовках HTTP должна быть кодирована по правилам заголовков, то есть скорее всего надо в base64 + / = обработать специальным образом.

Отредактировано пользователем 2 ноября 2020 г. 11:53:39(UTC)  | Причина: Не указана

thanks 2 пользователей поблагодарили two_oceans за этот пост.
Андрей * оставлено 02.11.2020(UTC), ctokas оставлено 02.11.2020(UTC)
Offline Андрей *  
#8 Оставлено : 2 ноября 2020 г. 11:58:10(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2034 раз в 1578 постах
Автор: 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');
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
ctokas оставлено 02.11.2020(UTC)
Offline ctokas  
#9 Оставлено : 2 ноября 2020 г. 12:00:30(UTC)
ctokas

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

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

Сказал(а) «Спасибо»: 2 раз
Спасибо, действительно добавляет CR LF CadesDoc.json (1kb) загружен 10 раз(а).

Странно, а в случае отправки документов с прикрепленной подписью на тот же сервер все проходит.
Offline ctokas  
#10 Оставлено : 2 ноября 2020 г. 12:04:16(UTC)
ctokas

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

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

Сказал(а) «Спасибо»: 2 раз
Огромное всем спасибо. Все выходные убил из-за этой мелочи.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.