Сообщение не соответствует формату xml encryption фсс

Обновлено: 06.07.2024

Ошибка 10 при расшифровке файла и проверке ЭЦП — это использование неверного способа шифрования отчетности либо несоответствие сертификата и электронной подписи отправителя заявленным стандартам.

Ошибки: ФСС не принимает отчетность

Каждый страхователь обязан своевременно отчитываться в ФСС по страховым взносам на травматизм. Единая форма расчета 4-ФСС утверждена приказом ФСС №381 от 26.09.2016 (ред. от 07.06.2017). Если в штате работодателя более 25 человек, отчет придется сдавать электронно. Для остальных страхователей способ подачи определяется на выбор: через интернет или на бумажном носителе.

При отправке отчетности страхователю важно проверить форму и правильность ее заполнения. Если в расчете обнаружены ошибки, то отчетность не примет ФСС. Страхователю выставят штраф минимум в 1 000 рублей.

Все виды недочетов расчета 4-ФСС группируют на:

  • форменные — это ошибки в структуре формы, наименовании файла;
  • файловые — это сбои при формировании самого файла отчета, например при шифровании;
  • арифметические — это стандартные бухгалтерские описки и неточности, допущенные при заполнении;
  • ошибка проверки ЭЦП в ФСС — это несоответствие форм криптографической защиты, заявленных Фондом к представлению электронной отчетности.

Современные бухгалтерские программы позволяют формировать электронную отчетность без предупреждений и ошибок. Но проблемы встречаются довольно часто.

Инструкция по исправлению

Порядок исправления ошибок в отчетности Соцстраха зависит от их вида. Специальные программы сверок позволяют выявить недочет еще до отправки формы в Соцстрах.

Ошибка при расшифровке файла и проверке ЭЦП

Все виды ошибок, которые возникают при формировании и сдаче расчета 4-ФСС, описаны на официальном сайте Фонда. Самые распространенные — это сбои электронных сертификатов (ЭС) и электронных подписей. Ошибки возникают из-за того, что Фонд социального страхования регулярно обновляет сертификаты криптографической защиты данных. Это необходимо, чтобы сохранить и обезопасить информацию отчетности от вредоносных программ и хакерских атак.

Шаг №1. Запустите АРМ.

На рабочем компьютере, через который осуществляется отправка электронных расчетов 4-ФСС, откройте АРМ подписания и шифрования электронных документов:


Шаг №2. Установка ЭС.


Шаг №3. Проверка установки.

Если ЭС установлен правильно, в левом нижнем углу окошка АРМ появится надпись:


Шаг №4. Формируем отчет.

Уже после обновления ЭС Фонда необходимо сформировать отчет снова. Проверьте правильность заполнения формы, исправьте арифметические и прочие недочеты. Теперь подпишите отчет действующей электронной подписью, зашифруйте с помощью нового ЭС и отправьте в Фонд.

Основные ошибки при отправке расчетов в ФСС

Наименование недочета при отправке отчетности в Соцстрах

Причины возникновения и способы устранения

He удалось расшифровать

Файл отчета зашифрован неверно либо не зашифрован вовсе. Проблема актуальна при выгрузке отчетности из специализированных бухгалтерских программ.

Попробуйте обновить ЭС Фонда.

He удалось проверить ЭЦП

Вероятно, файл расчета подписан не той электронной подписью, либо срок ее действия истек.

Попробуйте сформировать новый файл и снова подписать его ЭЦП.

Если срок действия истек, обратитесь к оператору, выдавшему ЭЦП.

В ЭС отсутствует регистрационный номер страхователя

В сертификате отсутствует код подразделения ФСС

Неверный формат регистрационного номера страхователя

Неверный формат кода подразделения ФСС

Отчет зашифрован на ключе, отличном от открытого ключа ФСС

При шифровании и подписании отчета выбран неверный или устаревший ЭСФСС. Обновите сертификаты по инструкции и подготовьте отчет заново.

Отчет не зашифрован или не подписан

Не найден издатель сертификата

Возможная причина — сбой ЭСФСС. Обратитесь к спецоператору, выдавшему ЭЦП. В озможна проблема на шлюзе приема отчетов, проявляющаяся при большой нагрузке.

Ошибка при проверке сертификата

Не найден или просрочен СОС издателя сертификата

Срок действия корневого сертификата страхователя истек или отозван.

Проблема на шлюзе приема отчетов, проявляющаяся при большой нагрузке во время сдачи отчетности. Обратитесь к серверу позднее.

Если проблема не устранена, обратитесь в спецоператору, который выдал ЭС.

Вероятно, файл расчета подписан не той электронной подписью, либо срок ее действия истек.

Попробуйте сформировать новый файл и снова подписать эго ЭЦП.

Если срок действия истек, обратитесь к оператору, выдавшему ЭЦП.

XML-файл с отчетом не прошел форматный контроль

Формат отчета не соответствует заявленному. Сформируйте файл заново.

В сертификате указано несуществующее подразделение Фонда

Проблема возникает вследствие ошибки ЭС — следует связаться со спецоператором, выдавшим ЭЦП.

Неверное имя файла

Зашифрованный файл расчета, предназначенный для передачи в Фонд социального страхования, должен иметь стандартизированное название.

С 2017 года — автор и научный редактор электронных журналов по бухучету и налогообложению. Но до этого времени вела бухгалтерский и налоговый учет в бюджетной сфере, в том числе как главбух.

1. Ошибка вызова сервиса передачи/получения данных.

Причины:

Неправильные настройки АРМ ЛПУ в части подписания;

Неправильные настройки криптопровайдера;

Истечение срока действия сертификата, закрытого ключа или лицензии КриптоПро CSP.

Что делать:

1. Выполните настройку АРМ ЛПУ

2. Проверьте настройки криптопровайдера

Ниже приведен образец настроек в КриптоПро CSP 5.0

После изменения настроек криптопровайдера необходимо перезапустить АРМ ЛПУ.

3. Проверьте сертификаты и лицензии

2. ORA-20015: Не удалось определить состояние ЭЛН:

Для перехода в статус ‘Продлен’ необходимо добавить период нетрудоспособности;
Для перехода в статус ‘Закрыт’ необходимо заполнить поля: ‘Приступить к работе с: дата’ или ‘Иное: код’;
Для перехода в статус ‘Направление на МСЭ’ необходимо заполнить поле ‘Дата направления в бюро МСЭ’

Причина:

1. В системе существует ЭЛН с таким же номером и такими же данными, которые Вы присылаете (дублирование данных);

2. Присылаемые данные в ЭЛН не соответствуют этапу оформления (заполнения) ЭЛН:

Что делать:

1. Запросите актуальное состояние ЭЛН из системы, тем самым Вы исключите повторную отправку тех же данных;

2. Выполните необходимую дальнейшую операцию с ЭЛН:

3. ORA-20013: Не удалось обновить данные. Обновляемая запись потеряла актуальность

Причина:

Вы пытаетесь изменить ЭЛН, который ранее уже был кем-то изменен.

Что делать:

1. Запросите актуальное состояние ЭЛН из системы, тем самым Вы исключите повторную отправку тех же данных;

2. Выполните необходимую дальнейшую операцию с ЭЛН в соответствии с порядком 624н:

Причина:

Что делать:

1. Удостоверьтесь, что номер ЭЛН, данные которого вы хотите получить, введен верно.

2. Дождитесь перехода ЭЛН на статус, который позволит Вам получить данные ЭЛН.

Проверьте правильность и актуальность ключа уполномоченного лица ФСС.

Причины:

Используется криптопровайдер Vipnet CSP определенной сборки.

При обновлении АРМ ЛПУ на новую версию с поддержкой ЭЛН 2.0 не обновилась библиотека криптографии

Что делать:

Укажите верный сертификат уполномоченного лица ФСС:

Удалите АРМ ЛПУ. Удалите каталог C:\FssTools. Переустановите АРМ ЛПУ с поддержкой ЭЛН 2.0 заново.

6. Ошибка вызова сервиса передачи/получения данных.

Причина:

Что делать:

Закажите и установите сертификат, который поддерживает не только операцию подписания, но и операцию шифрования.

7. Ошибка при установке АРМ ЛПУ: Unable to build entity manager factory.

Возникла ошибка при попытке загрузки данных из базы данных. Сообщите администратору следующую информацию:

Unable to build entity manager factory.

Причина:

Что делать:

1. Запустите установку с правами администратора;

Если установка приложения выполнена в соответствии с инструкцией, но ошибка повторяется, необходимо проверить:

8. Ошибка при попытке загрузки данных из базы данных.

Возникла ошибка при попытке загрузки данных из базы данных.

Сообщите следующую информацию: org. hibernate. exception. SQLGrammarException: could not extract ResultSet.

Причина:

Приложение АРМ ЛПУ не может получить данные из базы данных PostgreSQL. Эта ошибка возникает чаще всего после установки обновления, когда приложение обновлено, а база данных PostgreSQL по какой либо причине не обновлена.

Что делать:

9. Ошибка при попытке зайти в настройки подписи в ПО АРМ ЛПУ.

Причина:

Что делать:

1. Необходимо убедиться, что разрядность ОС совпадает с разрядностью установщика приложения.

2. Проверить, установлены ли в системе компоненты Microsoft. Net Framework версии 4 и выше (по умолчанию данные компоненты устанавливаются в C:\Windows\Microsoft. NET\Framework\ или C:\Windows\Microsoft. NET\Framework64\). Данные компоненты можно скачать с сайта microsoft. com.

3. Проверить, что в папке, куда установлено приложение, имеется файл GostCryptography. dll (по умолчанию данный файл устанавливается в C:\FssTools). Если данного файла нет, попробуйте переустановить приложение.

4. Если все верно, в командной строке выполнить:

5. Перезапустить приложение.

Причина:

Что делать:

Поменять строку соединения в настройках.

В меню Администрирование – Настройки сервисов ФСС – Строка соединения, укажите следующий адрес сервиса:

Причина:

Что делать:

Для исправления нужно удалить из БД приложения неверную строку (такие записи можно удалить только вручную).

Необходимо подключиться к серверу базы данных PostgreSQL, найти и удалить из базы ошибочную строку. При установке АРМ ЛПУ, вместе с БД и компонентами PostgreSQL устанавливается клиент для подключения к БД. По умолчанию находится здесь: C:\postgresql\bin\pgAdmin3.exe

В интерфейсе клиента открывается сервер PostgreSQL 9.5. Затем открывается схема fss (пользователь fss, пароль fss) – Схемы – public – Таблицы.

Обратите внимание! При удалении строки ЭЛН, если в этом ЭЛН были созданы периоды нетрудоспособности, сначала необходимо удалить их. Периоды нетрудоспособности хранятся в отдельной таблице fc_eln_periods и связаны с fc_eln_data_history по номеру ЭЛН. Просмотр и удаление периодов аналогично, описанному выше.

12. Установка нового сертификата ФСС.

Причина:

ГОСТ сертификата ФСС не соответствует выбранному в настройках криптопровайдеру, либо криптопровайдер не может получить закрытый ключ из контейнера закрытого ключа для выбранного сертификата.

Что делать:

1C Отчетность: не удалось расшифровать файл

Прочитав статью, вы:

Ошибка расшифровки файла

22 ноября 2018 года оператор 1С-Отчетности распространил следующую информацию для партнеров 1С и пользователей, сдающих отчетность в ПФР Москвы и Московской области.

Если вы сдаете отчетность в ПФР Москвы и Московской области, то вы гарантированно получите указанную ошибку.

Возникновение ошибок

Использование криптопровайдеров ниже версий VipNet 4.2 или КриптоПро CSP 4.0 повлечет возникновение ошибок при обработке документов на стороне ПФР.

Обновление криптопровайдеров

Для исключения технических проблем при работе с ПФР, необходимо обновить криптопровайдеры до версий: VipNet 4.2 или КриптоПро CSP 4.0 и выше.

Пошаговая инструкция по обновлению криптопровайдера

Шаг 2. Проверьте версию криптопровайдера VipNet в нижнем левом углу открывшейся формы.

Шаг 3. Обновите версию криптопровайдера по инструкции оператора Калуга Астрал, если:

Другие причины возникновения ошибок

Проверка версии криптопровайдера

Обновление 1С

Второе не менее важное правило: перед глубоким погружением в проблему выполните две несложных проверки в1С:

Отправка отчетности всегда должна выполняться на актуальной версии 1С. Проверьте текущий релиз вашей программы на сайте поддержки пользователей и обновите конфигурацию, если установленный релиз вашей программы не актуальный.

Разработчики вносят изменения в 1С, подключают новые модули, поэтому соответствие релиза программы актуальному перед отправкой отчетности необходимое условие успешной сдачи отчетности.

Права пользователя, отправляющего отчетность

Если работать с отчетностью стал новый пользователь и у него стала выходить ошибка, а у прежнего пользователя все было нормально — дело, скорее всего. в правах нового пользователя.

Если проверки выполнены, а ошибка осталась — переходите к поиску решения проблемы с помощью:

Техническая поддержка Калуга-Астрал

Корректность шифровки передаваемого файла сначала проверяет оператор, т. е. компания Калуга-Астрал, после успешной проверки оператором файлы отсылаются непосредственному адресату получения, например, в ПФР.

При возникновении проблем с передачей отчетности, в том числе по расшифровке переданного файла, можно перезвонить непосредственно оператору Калуга-Астрал и попросить помощи:

Дозвониться до оператора совсем несложно, в отличие от горячей линии 1С, и работа по решению проблем оператором выполняется без задержек — в момент обращения.

Настройка криптографии

Поскольку проблема носит чисто технический характер и может быть вызвана множеством причин, рассмотреть которые в одной статье очень сложно, мы дадим в этой части статьи:

Рекомендации Бухэксперт8

Если все технические рекомендации, указанные выше, выполнены, переходим к проверке состояния файлов сертификатов и их настроек в учетной записи документооборота 1С.

Как зайти в настройки учетной записи документооборота?

В открывшемся окне можно:

Если предложенные шаги не привели к решению проблемы — переустановите криптопровайдер.

Полный список рекомендаций 1С

Полный список рекомендаций 1С для устранения ошибки в операционной системе:

Действия по исправлению ошибки в 1С:

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

Похожие публикации

Карточка публикации

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Вы можете задать еще вопросов

Благодарю Ларису Казакову за прекрасный вебинар по бухгалтерской отчётности за 2020 год!
Всё, как всегда, актуально, пошагово, подробно, лаконично, профессионально и за ответы на поставленные вопросы участников.
С нетерпением, ждём следующий вебинар с Вашим участием!

Содержание

Вы можете задать еще вопросов

Здравствуйте, коллеги!
С 2017 года используем GostCryptography для взаимодействия с ФСС в части обмена данными ЭЛН. За библиотеку Автору отдельное спасибо. Все прекрасно работало, до появления сервиса версии 2.0.

При выполнении этих условий АРМ ФСС выполняет запрос ЭЛН по № и СНИЛС и ему сервис возвращает: "Ошибка: ORA-20001: Некорректные параметры: Рег. номер в запросе и ОГРН в сертификате ЭП. Не найден страхователь с такими параметрами, а также отсутствует уполномоченный представитель с таким сертификатом ЭП". Что, в общем корректно (если не обращать внимание, что контур тестовый), так как используется сертификат страхователя, который не участвует в обмене данными ЭЛН.

Кто ни будь подскажите, в чем моя ошибка.

The text was updated successfully, but these errors were encountered:

spiridonovav commented Jan 23, 2021 •

AlexMAS commented Jan 24, 2021

Здравствуйте. Насколько я помню, ранее была проблема с использованием устаревшего ID. Возможно они изменили что-то в этой части.

DPonomarchuk commented Jan 24, 2021

Я занимался сервисом МО, а не страхователя, но для меня это работает так:

Я считаю что если шифрование работало в версии 1.1, то вам нужно написать в чат разработчиков ФСС в телеграмм (возможно там кто-то сталкивался с таким) и ваша проблема не имеет отношения к библиотеке GostCryptography

spiridonovav commented Jan 24, 2021

Большое спасибо за ответ.

Возможно я неправильно помещаю свой сертификат в Header?
В спецификации об этом написано (в двух местах) так:

  1. Взаимодействие с сервисом с шифрованием https://docs-test.fss.ru/WSLnCryptoV20/FileOperationsLnService?WSDL работает именно с сертификатом https://docs-test.fss.ru/FSS_TEST_CERT_2021.cer
  2. Тестовый контур принимает тестовые сертификаты Vipnet http://testcert.infotecs.ru/ . Был какой-то период, что они удалили на тестовом контуре сертификат УЦ из доверенных и отбраковывали тестовые сертификаты по "ошибка построения цепочки. ".

Да, АРМ ЛПУ работает с тестовыми сертификатами. АРМ ФСС (подготовка расчетов для ФСС) получает от сервиса ошибку, в случае использования тестового сертификата: "Ошибка: ORA-20001: Некорректная подпись головной организации: Ошибка при проверке сертификата. VALID_SIGNATURE ЭП действительна; При проверке сертификата ЭП произошла ошибка. Ошибка построения цепочки сертификатов. Не найден сертификат Удостоверяющего Центра, указанный в сертификате пользователя". Либо АРМ ФСС игнорирует настройку "направление обмена" и работает только с рабочим контуром или тестовый контур не принимает тестовые сертификаты.

Я считаю что если шифрование работало в версии 1.1, то вам нужно написать в чат разработчиков ФСС в телеграмм (возможно там кто-то сталкивался с таким) и ваша проблема не имеет отношения к библиотеке GostCryptography

spiridonovav commented Jan 24, 2021

Здравствуйте. Насколько я помню, ранее была проблема с использованием устаревшего ID. Возможно они изменили что-то в этой части.

spiridonovav commented Jan 24, 2021

Полный текст последнего варианта процедуры шифрования:

spiridonovav commented Jan 24, 2021

spiridonovav commented Jan 24, 2021 •

В спецификации написано:

Может нужно добавлять два сертификата? Тогда непонятно, что за сертификат "пользователя"? Сертификат "отправителя" - это, наверное, сертификат страхователя.

spiridonovav commented Jan 24, 2021

Все таки правильный вариант: bsToken.InnerText = Convert.ToBase64String(insCert.RawData);
Так получается идентичная строка элемента , что и при использовании: KeyInfoX509Data(insCert)

spiridonovav commented Jan 24, 2021

alexnur commented Jan 29, 2021


/// Шифрование документа по спецификации 2.0.
///
/// Подписанный ЭЦП XML-документ.
/// var sharedKey = new Gost_28147_89_SymmetricAlgorithm(providerType);
/// Публичный сертификат ФСС.
/// Публичный сертификат страхователя.
protected override XmlDocument EncryptXmlDocument(XmlDocument xmlDocument, Gost_28147_89_SymmetricAlgorithmBase sharedKey,
X509Certificate2 certificateEncryption,
X509Certificate2 certificateOpen)
// Сюда будет записан зашифрованный XML-документ "xmlDocument".
XmlDocument result = new XmlDocument();
// Согласно спецификации 2.0 необходимо добавить X509Certificate (публичный сертификат пользователя) в header после подписания документа,
// но перед шифрованием.
// Несмотря на то, что этот же сертификат добавлен в header в секцию BinarySecurityToken!
InsertX509UserPublicCertificateToXmlHeader(xmlDocument, certificateOpen);
// Ищем заданный элемент для заширования. Envelope
XmlElement elementToEncrypt = GetElementToEncrypt(xmlDocument, ref result);
// Создаем объект EncryptedData и заполняем его необходимой информацией.
EncryptedData edElement = new EncryptedData();
//edElement.Type = EncryptedXml.XmlEncElementUrl;
edElement.Type = EncryptedXml.XmlEncElementContentUrl;
// Заполняем алгоритм зашифрования данных. Он будет использован при расшифровании.
edElement.EncryptionMethod = new EncryptionMethod(Gost_28147_89_SymmetricAlgorithm.AlgorithmNameValue);
// Создаем новую ссылку на ключ.
edElement.KeyInfo = new KeyInfo();
// Создаем случайный симметричный ключ.
// В целях безопасности удаляем ключ из памяти после использования.
using (Gost_28147_89_SymmetricAlgorithm sessionKey = new Gost_28147_89_SymmetricAlgorithm(sharedKey.ProviderType))
// Gost_R3410_2001_Constants.SignatureAlgorithm
//sessionKey.
//При генерации сессионного ключа 28147 всегда используется 2001 провайдер(TypeId = 75).
//Соответственно параметры CIPHER_OID ключа всегда берутся для указанного провайдера.
//И если при шифровании ключа используется новый сертификат ФСС(уполномоченного лица) с
//2012 ключом получается нехорошо:
// -(.
//В обернутом ключе параметры алгоритма прописываются
//1.2.643.2.2.31.1
//когда как ФСС ожидает
//1.2.643.7.1.2.5.1.1
// Создаем объект класса EncryptedXml
EncryptedXml eXml = new EncryptedXml();
// Зашифроваем узел на симметричном ключе.
byte[] encryptedElement = eXml.EncryptData(elementToEncrypt, sessionKey, false);
// Зашифровываем сессионный ключ и добавляем эти зашифрованные данные к узлу EncryptedKey.
EncryptedKey ek = new EncryptedKey();
byte[] encryptedKey = GostEncryptedXml.EncryptKey(sessionKey, (GostAsymmetricAlgorithm)certificateEncryption.GetPublicKeyAlgorithm());
ek.CipherData = new CipherData(encryptedKey);
//ek.EncryptionMethod = new EncryptionMethod(GostEncryptedXml.XmlEncGostNamespaceUrl + "transport-gost2001");
ek.EncryptionMethod = new EncryptionMethod(GostCryptography.Gost_R3410.Gost_R3410_2001_AsymmetricAlgorithm.KeyExchangeAlgorithmValue);
KeyInfoX509Data data = new KeyInfoX509Data(certificateOpen);
ek.KeyInfo.AddClause(data);
// Добавляем ссылку на зашифрованный ключ к зашифрованным данным.
edElement.KeyInfo.AddClause(new KeyInfoEncryptedKey(ek));
// Добавляем зашифрованные данные к объекту EncryptedData.
edElement.CipherData.CipherValue = encryptedElement;

Подписанный ЭЦП XML-документ.

alexnur commented Jan 29, 2021

Кстати, когда пробую дешифровать зашифрованный ответ ФСС (после отправки им зашифрованного запроса, который они прислали мне по почте), то получаю исключение "Плохие данные". Дешифровать пробую как и для спецификации 1.1.
Исключение возникает при возврате результата из метода
return GostEncryptedXml.DecryptKey(encryptedKey.CipherData.CipherValue, myKey);
Исключение: 'System.Security.Cryptography.CryptographicException' in GostCryptography.dll ("Плохие данные.
")

` private static SymmetricAlgorithm GetDecryptionKey(EncryptedData encryptedData, X509Certificate2 myCert)
IEnumerator encryptedKeyEnumerator = encryptedData.KeyInfo.GetEnumerator();
// Проходим по всем KeyInfo
while (encryptedKeyEnumerator.MoveNext())
// пропускам все что неизвестно.
KeyInfoEncryptedKey current = encryptedKeyEnumerator.Current as KeyInfoEncryptedKey;
if (current == null) continue;
// до первого EncryptedKey
EncryptedKey encryptedKey = current.EncryptedKey;

spiridonovav commented Jan 29, 2021

Такое исключение, насколько я помню, возникает в случае, если в настройках GostCryptography Криптопровайдер не соответствует, указанному в сертификате.
Смотрю ваш код. Может общими усилиями разберемся.

spiridonovav commented Jan 29, 2021

Кстати, когда пробую дешифровать зашифрованный ответ ФСС (после отправки им зашифрованного запроса, который они прислали мне по почте), то получаю исключение "Плохие данные"

spiridonovav commented Jan 29, 2021

Запрашивал в поддержке тестовый готовый зашифрованный запрос, чтобы исключить остальные проблемы. Прислали зашифрованный запрос. Если я его отправляю на тестовый контур с шифрованием - все хорошо.

spiridonovav commented Jan 29, 2021

byte[] encryptedKey = GostEncryptedXml.EncryptKey(sessionKey, (GostAsymmetricAlgorithm)certificateEncryption.GetPublicKeyAlgorithm());

Не понятно, почему вы шифруете ключ на сертификате страхователя, а не на сертификате ФСС?
Вообще не понял, почему у метода EncryptXmlDocument так много параметров-сертифкатов?
Нужен ведь сертификат страхователя и сертификат ФСС. Или я ошибаюсь?

alexnur commented Jan 29, 2021 •

Запрашивал в поддержке тестовый готовый зашифрованный запрос, чтобы исключить остальные проблемы. Прислали зашифрованный запрос. Если я его отправляю на тестовый контур с шифрованием - все хорошо.

alexnur commented Jan 29, 2021 •

byte[] encryptedKey = GostEncryptedXml.EncryptKey(sessionKey, (GostAsymmetricAlgorithm)certificateEncryption.GetPublicKeyAlgorithm());

Не понятно, почему вы шифруете ключ на сертификате страхователя, а не на сертификате ФСС?

certificateEncryption - Это сертификат ФСС. Форматирование кода тут сломалось вместе с директивами region. Но порядок сохранился для сигнатуры метода:
protected override XmlDocument EncryptXmlDocument(XmlDocument xmlDocument, Gost_28147_89_SymmetricAlgorithmBase sharedKey,
X509Certificate2 certificateEncryption,
X509Certificate2 certificateOpen)

/// Публичный сертификат ФСС.
/// Публичный сертификат страхователя.

Вообще не понял, почему у метода EncryptXmlDocument так много параметров-сертифкатов?
Нужен ведь сертификат страхователя и сертификат ФСС. Или я ошибаюсь?

Я брал готовый пример, переделывал. С какой целью переделывал - уже не помню. Параметров на самом деле не много

  • сам xml документ, подлежащий шифрованию;
  • sharedKey - отправляем в зависимости от провайдера (КриптоПро/VipNet), до вызова метода;
  • сертификат ФСС;
  • сертификат страхователя.
    Сертификатом ФСС шифруем (расшифровать сможет только владелец закрытого ключа, т.е. только ФСС).
    Сертификат страхователя необходимо приложить в 2 местах: keyInfo и в X509Certificate в header'е. Наверное он им нужен с целью проверки цепочки сертификатов при проверке ЭЦП страхователя и шифрования ответа. Почему раньше обходились при шифровании запрса только указанием в keyInfo, а теперь до шифрования потребовалось еще и в X509Certficate указать - без понятия. Можно ведь для 2 целей как и прежде публичный сертификат страхователя из keyInfo брать.

alexnur commented Feb 1, 2021 •

alexnur commented Feb 3, 2021

На просьбу прислать тестовый запрос подписанный и зашифрованный получил следующий ответ:
"Кажется, что это бессмысленно, т.к. расшифровать запрос в обратную сторону все равно не получится.
Обратите внимание, в спецификации страхователя 2.0 описаны шаги по шифрованию запроса.
Также, если вы для работы своего ПО используете библиотеку шифрования GostCryptography, то она была переписана, прежняя версия не может корректно работать с сервисом 2.0."

У меня была GostCryptography версии 2.0.7, с которой работала спецификация 1.1.
В репозитории есть версия 2.0.8. Установил ее. Изменений никаких - ФСС по-прежнему не может расшифровать мой запрос. Запросы по спецификации 1.1 без проблем работают в том числе и с версией 2.0.7.
В АРМ ФСС используется GostCryptography вообще версии 2.0.2. Ее я тоже пробовал подключать к проекту. Изменений никаких.
Удивительно другое - согласно ответу ФСС требуется более новая версия, мол со старой работать не будет. А сами используют 2.0.2.
В общем, вопрос открыт.

AlexMAS commented Feb 3, 2021

Большие переделки произошли с релизом 2.0, потом были правки мелких багов и косметические дополнения. :)

spiridonovav commented Feb 4, 2021

Также, если вы для работы своего ПО используете библиотеку шифрования GostCryptography, то она была переписана, прежняя версия не может корректно работать с сервисом 2.0."

Очень интересно! А что они такого могли сделать, что:

  1. Шифрование стало "несовместимым" с сервисом 1.1
  2. Спецификация на сервис 2.0 (в разделе шифрования) практически не отличается от спецификации 1.1.

Уважаемый @AlexMAS, вы не могли бы прокомментировать эти новые данные?

spiridonovav commented Feb 4, 2021

В АРМ ФСС используется GostCryptography вообще версии 2.0.2. Ее я тоже пробовал подключать к проекту. Изменений никаких.
Удивительно другое - согласно ответу ФСС требуется более новая версия, мол со старой работать не будет. А сами используют 2.0.2.
В общем, вопрос открыт.

В АРМ ФСС использует фактически свой вариант GostCryptography. У них в ней свои классы, интерфейсы. Скорее всего у них не заморачиваются с изменением ее версии. В любом случае, у них своя библиотека и сравнивать ее версию с версией открытой библиотеки бесполезно.

AlexMAS commented Feb 4, 2021

Да, скорей всего, у них свой fork, что усложняет ситуацию. Возможно, у них на это были свои причины.

spiridonovav commented Feb 4, 2021 •

Да, скорей всего, у них свой fork, что усложняет ситуацию. Возможно, у них на это были свои причины.

  1. Создание случайного сессионного ключа.
    При работе с ключами на алгоритме ГОСТ 2012 следует инициализировать генератор параметрами шифрования TK26Z (предоставляется провайдером).
    Алгоритм шифрования GOST28147.
  2. Зашифрование сессионного ключа.
    2.1. Создание шифратора для зашифрования ключа. Применяется алгоритм трансформации "urn:ietf:params:xml:ns:cpxmlsec:algorithms:transport-gost2001". Cоздается эфемерный ключ, который согласуется с открытым ключом получателя, и формируется ключ согласования (на котором будет зашифрован сессионный ключ);
    2.2. Создание блока KeyInfo с сертификатом;
    2.3. Шифрование сессионного ключа происходит с помощью указанного асимметричного ключа (ГОСТ Р 34.10). Cессионный ключ используется для шифрования данных и в свою очередь так же шифруется.
    CALG_DH_GR3410_12_256_EPHEM - идентификатор алгоритма обмена ключей по Диффи-Хеллману на базе закрытого ключа эфемерной пары. Открытый ключ получается по ГОСТ Р 34.10 2012 (256 бит).
    CALG_DH_GR3410_12_512_EPHEM - идентификатор алгоритма обмена ключей по Диффи-Хеллману на базе закрытого ключа эфемерной пары. Открытый ключ получается по ГОСТ Р 34.10 2012 (512 бит).
  3. В блоке soapenv:Header в подписанном запросе добавляется блок , который содержит публичный сертификат пользователя в формате x509v3 (кодировке base64).
  4. Зашифрование документа.
    4.1. Создание шифратора в режиме зашифрования. Применяется алгоритм
    "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gost28147". Возможные параметры шифратора GostJCE/CBC/ISO10126Padding;
    4.2. Добавление зашифрованного сессионного ключа, полученного ранее (добавление блока KeyInfo;
    4.3. Зашифрование документа на сессионном ключе.

spiridonovav commented Feb 4, 2021

alexnur commented Feb 4, 2021

Это файл подписанного зашифрованного запроса страхователя к тестовому сервису ФСС. Пример прислали из ФСС. Запрос рабочий.

spiridonovav commented Feb 4, 2021

spiridonovav commented Feb 20, 2021 •

Был получен ответ:

Добрый день!
Заявка PPO2021-18913
Вопросы приведенные в заявке находятся вне компетенции технической поддержки. Техническая поддержка отвечает за работоспособность сервисов ЭЛН и поддерживаемых приложений, дает консультации по бизнес-процессам и применяемым форматно-логическим контролям, итп.
Техническая поддержка не дает консультаций и решений по разработке сторонних приложений.
Стандарты и алгоритмы, используемые при работе сервиса ЭЛН, являются открытыми и перечислены в спецификациях

С середины октября у многих организаций, в том числе медицинских учреждений возникли проблемы в работе с сервисом электронных больничных при подключении к нему из АРМ ЛПУ, медицинских информационных систем, из 1С.

Данная ошибка связана с заменой техслужбой ФСС 17 октября 2021 г. части интернет-адреса сервисов ЭЛН с *docs* на *eln*.

2. В АРМ ЛПУ необходимо открыть "Администрирование" - "Настройки сервисов ФСС" и заменить в строке соединения с сервисом ФСС url-адрес на верный.

Читайте также: