Ошибка проверки ЭП: подпись недействительна, не соответствует файлу или испорчена. ФИО субъекта сертификата: '***'.С

Обсуждение вопросов по API СБИС документооборот, отправка и обработка входящих документов.
Ответить
hedo
Site Admin
Сообщения: 13
Зарегистрирован: Вс май 12, 2019 8:31 pm

Ошибка проверки ЭП: подпись недействительна, не соответствует файлу или испорчена. ФИО субъекта сертификата: '***'.С

Сообщение hedo » Сб июн 29, 2019 11:20 am

Для интеграции через внешний интерфейс API СБИС.
Ошибка проверки ЭП: подпись недействительна, не соответствует файлу или испорчена. ФИО субъекта сертификата: '***'.Серийный номер сертификата: '***', отпечаток: ***

Как бы это банально не звучало, ошибка связана с тем что подпись под документом на самом деле недействительна.

Для понимания процесса, разберем алгоритм отправки с подписанием документов в СБИС API:
1) выполняем записать документ методом СБИС.ЗаписатьДокумент, если ответ с кодом 200, значит все ок, идем дальше
после этого метода, документ как есть записывается в ЛК СБИС, его можно найти в соответствующем реестре в ЛК СБИС, если в фильтре включить отображение Черновиков

2) выполняем СБИС.ПодготовитьДействие, для подписания после выполнения метода возвращается самое главное - хэш под каждым вложением
тут СБИС выполняет все подготовительные действия, в т.ч. модифицирует документ (заполняет ид участников и подписанта) если подпись под документом не была передана при СБИС.ЗаписатьДокумент

3) Получив хэш, надо подписать каждое вложение через API установленного криптопровайдера и передать на следующем шаге (СБИС.ВыполнитьДействие) подписи для каждого вложения в ранее записанный пакет

Варианты/причины ошибки:
1) Вы подписали не хэш, который вернулся на шаге 2, а целиком документ, тогда подпись под документом будет значительно больше по объему информации. Выкачайте подписанный документ в интерфейсе СБИС и сравните с тем что у вас получается через API по размеру.

2) При подписании использовался полученный на 2м шаге хэш, но ваша система (в частности такое есть в 1С в функции Подписать(ИсходныеДанные, Сертификат) сама вычисляет хэш, т.к. ждет на вход исходный документ), таким образом получается подписание 2го хэша, и в СБИС проверка не проходит.

3) вы решили подписывать не хэш вернувшийся от СБИС, а сами все рассчитать и подписали тот документ, который передавали в СБИС.ЗаписатьДокумент, он был модифицирован СБИС и документы по факту оказались разными.
Если вы решили вычислить хэш сами, то убедитесь что хэш вычисляется на уже модифицированном документе, см выше шаг 2.

4) вы по какой-то причине ошиблись сертификатом или модифицировали результат подписания

Уверены что ничего из перечисленного не случилось с вами? Пишите ниже, разберемся

Ответить