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

Уведомление

Icon
Error

12 Страницы«<23456>»
Опции
К последнему сообщению К первому непрочитанному
Offline johnsilver1963  
#31 Оставлено : 9 октября 2012 г. 1:38:59(UTC)
johnsilver1963

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

Группы: Участники
Зарегистрирован: 13.03.2012(UTC)
Сообщений: 7

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

Вообще было бы неплохо, если бы Крипто-Про уделил этой теме внимание и помог найти альтернативное решение :-)
Ведь фактически ни пример из документации к SDK, ни статья
http://www.cryptopro.ru/...olzovaniem-kriptopro-net
полнотью требованиям Рекомендаций СМЭВ 2.4.4. не соответствуют!
Offline commander  
#32 Оставлено : 10 октября 2012 г. 13:22:39(UTC)
commander

Статус: Участник

Группы: Участники
Зарегистрирован: 16.12.2008(UTC)
Сообщений: 22
Откуда: Смоленск

Сказал(а) «Спасибо»: 4 раз
Так что, все делают подпись вручную, без использования SignedXml? Может кто-нибудь поделится примером?
Или у всех запросы в СМЭВ, подписанные способом из примера Криптопро, тоже проходят?
Я пока сделал как описывал ранее (без префиксов), но есть подозрение, что так проходят запросы не ко всем ведомствам :(
Offline khomenko  
#33 Оставлено : 10 октября 2012 г. 14:52:29(UTC)
Михаил Хоменко

Статус: Активный участник

Группы: Администраторы, Участники
Зарегистрирован: 28.04.2010(UTC)
Сообщений: 141
Мужчина
Откуда: Крипто-Про

Поблагодарили: 16 раз в 15 постах
Для начала имеет смысл проверить на этих сервисах WCF клиента. Если и он вернет ошибку неверная ЭЦП - всё плохо ))
SignedXml c префиксами не справится, придется всю подпись, все узлы формировать вручную, с WCF ещё сложнее будет.
Offline Павел Смирнов  
#34 Оставлено : 10 октября 2012 г. 15:46:33(UTC)
Павел Смирнов

Статус: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
commander написал:
Так что, все делают подпись вручную, без использования SignedXml? Может кто-нибудь поделится примером?
Или у всех запросы в СМЭВ, подписанные способом из примера Криптопро, тоже проходят?
Я пока сделал как описывал ранее (без префиксов), но есть подозрение, что так проходят запросы не ко всем ведомствам :(

Можно сделать без префиксов с использованием SignedXml. Если такой вариант проходит, то вот вам счастье.

Явного требования префикса ds: в мет. рекомендациях я не увидел. Вообще говоря, с точки зрения XMLDSIG оба ваших варианта валидны. Видимо, какая-то глупая реализация сервиса пытается как-то упорядочить пространства имён в пришедшем запросе и портит стройную картину.

Если всё-таки какие-то сервисы захотят всюду ds: (чего я бы им крайне не рекомендовал!), то скорее всего подойдёт пример для СМЭВ на WCF.
Техническую поддержку оказываем тут.
Наша база знаний.
Offline Климанов Евгений  
#35 Оставлено : 10 октября 2012 г. 19:02:47(UTC)
Климанов Евгений

Статус: Активный участник

Группы: Участники
Зарегистрирован: 24.08.2009(UTC)
Сообщений: 60

Вот ответ службы поддержки СМЭВ по поводу неймспейса ds:
Цитата:
Прямым дочерним тегом элемента Security должен являться тег ds:Signature, расположенный в namespace
xmlns:ds=http://www.w3.org/2000/09/xmldsig# <http://www.w3.org/2000/09/xmldsig> .
Тег ds:Signature должен соответствовать стандарту xmldsig (проверить наличие дочерних тегов ds:SignedInfo, ds:SignatureValue, ds:KeyInfo).


Собственно выполнение этого требования и приводит в ступор.

Цитата:
По вопросу корректности кода, используемого для генерации подписи комментарии службой поддержки СМЭВ не предоставляются. Для корректного формирования подписи советуем еще раз ознакомиться с методическими рекомендациями, размещенными на технологическом портале СМЭВ - http://smev.gosuslugi.ru Также на официальном сайте Крипто-Про http://www.cryptopro.ru/...pomoshchyu-kriptopro-jcp Вы можете посмотреть примеры подписи и ее проверки для SOAP сообщений по ГОСТ алгоритмам.
Данные примеры практически реализуют функциональность, требуемую для взаимодействия со СМЭВ.

Отредактировано пользователем 10 октября 2012 г. 19:09:06(UTC)  | Причина: Не указана

Offline johnsilver1963  
#36 Оставлено : 10 октября 2012 г. 21:10:33(UTC)
johnsilver1963

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

Группы: Участники
Зарегистрирован: 13.03.2012(UTC)
Сообщений: 7

Такое впечатление, что СМЭВ таким образом склоняет народ выкинуть .NET на помойку и изучать Java :-)
Offline Климанов Евгений  
#37 Оставлено : 11 октября 2012 г. 18:58:38(UTC)
Климанов Евгений

Статус: Активный участник

Группы: Участники
Зарегистрирован: 24.08.2009(UTC)
Сообщений: 60

У меня заработал пример из документации к SDK. После создания объекта XmlDocument нужно выставить свойство PreserveWhitespace.

При этом у узлов SignatureInfo и SignatureValue, а также у их дочерних узлов выставлять неймспейс ds не надо. Также не надо инвертировать подпись.

Код:
XmlDocument doc = new XmlDocument();
            doc.PreserveWhitespace = true;


Ответ который вернул проверочный сервис СМЭВ:
Код:
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
   <env:Header/>
   <env:Body>
      <ns1:VerifySignatureResponse xmlns:ns2="http://idecs.nvg.ru/identityservice/ws/types/" xmlns:ns1="http://smev.gosuslugi.ru/SignatureTool/xsd/">
         <error>
            <ns2:errorCode>0</ns2:errorCode>
         </error>
         <certificate>MII...</certificate>
      </ns1:VerifySignatureResponse>
   </env:Body>
</env:Envelope>
Offline khomenko  
#38 Оставлено : 11 октября 2012 г. 19:06:02(UTC)
Михаил Хоменко

Статус: Активный участник

Группы: Администраторы, Участники
Зарегистрирован: 28.04.2010(UTC)
Сообщений: 141
Мужчина
Откуда: Крипто-Про

Поблагодарили: 16 раз в 15 постах
PreserveWhitespace - довольно странно: все пробелы, переносы и т.п. должен съесть трансформ.
Префикс ds: можно оставить, но правильно и один (!) раз объявить пр-во имен http://www.w3.org/2000/09/xmldsig#

Сделали пример с формированием подписи вручную (чтобы были проставлены ds во всех узлах), такую подпись SignedXml успешно проверяет.
Offline Климанов Евгений  
#39 Оставлено : 11 октября 2012 г. 19:28:21(UTC)
Климанов Евгений

Статус: Активный участник

Группы: Участники
Зарегистрирован: 24.08.2009(UTC)
Сообщений: 60

У нас локально тоже все проверялось. Не проверялось в сервисе СМЭВ.

Префикс ds у нас определен в корневом узле Envelope. В шаблоне созданы узлы ds:Signature и ds:KeyInfo. SignedXml создает узлы SignatureInfo и SignatureValue и все вложенные узлы без префикса.
Каким образом на проверку в СМЭВ влияет PreserveWhitespace затрудняюсь ответить.

Отредактировано пользователем 11 октября 2012 г. 19:30:23(UTC)  | Причина: Не указана

Offline Павел Смирнов  
#40 Оставлено : 12 октября 2012 г. 16:51:23(UTC)
Павел Смирнов

Статус: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
commander написал:
Так что, все делают подпись вручную, без использования SignedXml? Может кто-нибудь поделится примером?
Или у всех запросы в СМЭВ, подписанные способом из примера Криптопро, тоже проходят?
Я пока сделал как описывал ранее (без префиксов), но есть подозрение, что так проходят запросы не ко всем ведомствам :(

Кстати, зачем в вашем примере <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> ? Сама подпись совсем не enveloped, хотя вряд ли это влияет на результат проверки.
Техническую поддержку оказываем тут.
Наша база знаний.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
12 Страницы«<23456>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.