Коллеги, подскажите нужен ли КриптоПро .Net в такой ситуации.
Наше подразделение (юридическое лицо) купило программный комплекс "Барс-имущество" для отправки сведений в СМЭВ 3 (ГИС ГМП). Комплекс построен на dotNET, состоит из клиентской и серверной части. Требуется dotNET 4.5.2 и выше. В штатном режиме, как я понимаю, отправка запросов производится с клиентского места и изначально разработчики Барса заявляли, что нужен криптопровайдер КриптоПро и все будет работать. Криптопровайдер установлен, лицензия введена. При собственно подписании запроса клиентская часть спрашивает выполнить подписание на клиенте или на сервере дважды - для ЭП-СП и для ЭП-ОВ. В файлах несколько раз мелькает GostCryptography.dll
У клиентской части также есть CryptoPro.Sharpei.Base.dll CryptoPro.Sharpei.Xml.dll (1.4.5708.1) Это то, что упомянуто в закрепленной теме как RTE?
В пятницу техподдержка Барса начала настройку самого взаимодействия со СМЭВ 3, мы им дали удаленный доступ к серверу и клиентской части, также расположенной на сервере. И вот неприятность - СМЭВ ответил, что подпись ЭП-ОВ некорректна. На странице проверки запроса СМЭВ 3 выдает, что обе подписи нарушены и ЭП-ОВ и ЭП-СП. Когда я проверяю запрос своей программой - выдается что SignatureValue корректно (то есть криптопровайдер отработал без проблем, закрытый ключ по сертификату нашелся, хэш-функция корректна и т.д.), но неверное значение DigestValue. Делаю вывод, что при подписании неверная обработка трансформов. На сервере Windows 2019, там уже изначально dotNET 4.7, который вроде как уже умеет правильно эксклюзивно каноникализировать. Так что подозрение на поддержку смэвовского трансформа. Хотя, наверно, должно быть исключение, когда вообще трансформ не поддерживается, странная ситуация. Другая возможная причина - некорректная кодировка, в сохраненных на диске запросах фактическая кодировка utf-8, но в заголовке ?xml указано 1251.
Далее техподдержка предложила на всякий случай установить Криптопро .Net (1.0.7132.0 серверную пробную версию) и перезагрузиться - и "чудесным образом" ошибка проверки подписи ушла. Однако, как я понимаю, это потребует отдельную платную лицензию при установке на сервере.
Пока сделали тестовые запросы к эмулятору (они вообще без ЭП).
Соответственно вопросы:
1. Возможно будет проще подписывать на клиентских местах чем на сервере?
2. Чего такого изменяет Криптопро .Net на сервере, что DigestValue стало сходиться? Дополнительная поддержка urn://smev-gov-ru/xmldsig/transform ? Или кодировка определяется не по заголовку?
Отредактировано пользователем 22 марта 2021 г. 10:09:52(UTC)
| Причина: Не указана