Статус: Новичок
Группы: Участники
Зарегистрирован: 13.03.2012(UTC) Сообщений: 7
|
Спасибо за подсказку - завтра проверю. Я этот метод тоже смотрел. Но насколько я понял - в нем блоки SignedInfo используются для настройки алгоритма хеширования, но сам SignedInfo в расчете хеша не участвует. Хотя может я чего-то недоглядел. Вообще было бы неплохо, если бы Крипто-Про уделил этой теме внимание и помог найти альтернативное решение :-) Ведь фактически ни пример из документации к SDK, ни статья http://www.cryptopro.ru/...olzovaniem-kriptopro-netполнотью требованиям Рекомендаций СМЭВ 2.4.4. не соответствуют!
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 16.12.2008(UTC) Сообщений: 22 Откуда: Смоленск
Сказал(а) «Спасибо»: 4 раз
|
Так что, все делают подпись вручную, без использования SignedXml? Может кто-нибудь поделится примером? Или у всех запросы в СМЭВ, подписанные способом из примера Криптопро, тоже проходят? Я пока сделал как описывал ранее (без префиксов), но есть подозрение, что так проходят запросы не ко всем ведомствам :(
|
|
|
|
|
|
Статус: Активный участник
Группы: Администраторы, Участники Зарегистрирован: 28.04.2010(UTC) Сообщений: 141  Откуда: Крипто-Про Поблагодарили: 16 раз в 15 постах
|
Для начала имеет смысл проверить на этих сервисах WCF клиента. Если и он вернет ошибку неверная ЭЦП - всё плохо )) SignedXml c префиксами не справится, придется всю подпись, все узлы формировать вручную, с WCF ещё сложнее будет.
|
|
|
|
|
|
Статус: Вам и не снилось
Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC) Сообщений: 831 Откуда: Крипто-Про
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 48 раз в 44 постах
|
commander написал:Так что, все делают подпись вручную, без использования SignedXml? Может кто-нибудь поделится примером? Или у всех запросы в СМЭВ, подписанные способом из примера Криптопро, тоже проходят? Я пока сделал как описывал ранее (без префиксов), но есть подозрение, что так проходят запросы не ко всем ведомствам :( Можно сделать без префиксов с использованием SignedXml. Если такой вариант проходит, то вот вам счастье. Явного требования префикса ds: в мет. рекомендациях я не увидел. Вообще говоря, с точки зрения XMLDSIG оба ваших варианта валидны. Видимо, какая-то глупая реализация сервиса пытается как-то упорядочить пространства имён в пришедшем запросе и портит стройную картину. Если всё-таки какие-то сервисы захотят всюду ds: (чего я бы им крайне не рекомендовал!), то скорее всего подойдёт пример для СМЭВ на WCF. |
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 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)
| Причина: Не указана
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 13.03.2012(UTC) Сообщений: 7
|
Такое впечатление, что СМЭВ таким образом склоняет народ выкинуть .NET на помойку и изучать Java :-)
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 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>
|
|
|
|
|
|
Статус: Активный участник
Группы: Администраторы, Участники Зарегистрирован: 28.04.2010(UTC) Сообщений: 141  Откуда: Крипто-Про Поблагодарили: 16 раз в 15 постах
|
PreserveWhitespace - довольно странно: все пробелы, переносы и т.п. должен съесть трансформ. Префикс ds: можно оставить, но правильно и один (!) раз объявить пр-во имен http://www.w3.org/2000/09/xmldsig#Сделали пример с формированием подписи вручную (чтобы были проставлены ds во всех узлах), такую подпись SignedXml успешно проверяет.
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.08.2009(UTC) Сообщений: 60
|
У нас локально тоже все проверялось. Не проверялось в сервисе СМЭВ. Префикс ds у нас определен в корневом узле Envelope. В шаблоне созданы узлы ds:Signature и ds:KeyInfo. SignedXml создает узлы SignatureInfo и SignatureValue и все вложенные узлы без префикса. Каким образом на проверку в СМЭВ влияет PreserveWhitespace затрудняюсь ответить. Отредактировано пользователем 11 октября 2012 г. 19:30:23(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Вам и не снилось
Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC) Сообщений: 831 Откуда: Крипто-Про
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 48 раз в 44 постах
|
commander написал:Так что, все делают подпись вручную, без использования SignedXml? Может кто-нибудь поделится примером? Или у всех запросы в СМЭВ, подписанные способом из примера Криптопро, тоже проходят? Я пока сделал как описывал ранее (без префиксов), но есть подозрение, что так проходят запросы не ко всем ведомствам :( Кстати, зачем в вашем примере <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> ? Сама подпись совсем не enveloped, хотя вряд ли это влияет на результат проверки. |
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close