|
1 / 1 / 0
Регистрация: 16.12.2015
Сообщений: 1
|
||||||||||||||||
.NET 4.x Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ16.12.2015, 11:46. Показов 176144. Ответов 999
Здравствуйте!
Передо мной стоит задача интеграции с системой ГИС ЖКХ (https://dom.gosuslugi.ru/) программой, написанной на языке C#, .NET Framework 4 Данный сервис предоставляет SOAP веб-сервисы для приема и передачи информации, соединение защищается сертификатом по алгоритму ГОСТ. Каждый элемент внутри тела SOAP сообщения подписывается сигнатурой XAdES-BES. На данный момент для осуществления защищённого соединения я использую «МагПро КриптоТуннель» (stunnel) со следующими настройками: Конфигурация stunnel (stunnel.conf)
verify=2
client=yes CAFile=CA-test2-cryptopro.pem engine=gost usb_eject=yes sslVersion=TLSv1 taskbar=yes DEBUG=7 [pseudo-https] protocol = http accept = 127.0.0.1:8754 connect = 54.76.42.99:60045 ciphers = GOST2001-GOST89-GOST89 TIMEOUTclose = 0 cert=test.pem key=test.key Для обмена SOAP сообщениями я использую стандартный сервис WCF с прокси-классами, сгенерированные из WSDL файлов. Для подписи SOAP сообщений сигнатурой использую ниже представленный класс: C#. Класс для подписи исходного SOAP сообщения
В результате после подписи элемента "exportNsiItemRequest" SOAP-сообщение выглядит следующим образом: XML. Подписанное SOAP сообщение
Проблема заключается в том, что ответ от сервера приходит следующий: ru.lanit.security.crypto.CryptoException : ЭП не прошла проверку: Invalid XML Signature Текст ответного сообщения следующий: XML. SOAP-ответ от сервера
Подскажите пожалуйста: 1) Как сделать валидную подпись, которая будет проходить проверку сервером, используя WCF ? 2) Как с помощью средств CryptoPro.NET отказаться от использования «МагПро КриптоТуннель» ?
1
|
||||||||||||||||
| 16.12.2015, 11:46 | |
|
Ответы с готовыми решениями:
999
Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (3) Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (5) Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (4) |
|
13 / 13 / 0
Регистрация: 25.01.2016
Сообщений: 38
|
|
| 04.02.2016, 09:43 | |
|
Обновил тестовое приложение. Теперь в нем есть wcf-прокси класс, созданный утилитой svcutil для двух сервисов ext-bus-nsi-service/services/Nsi и ext-bus-org-registry-service/services/OrgRegistry.
В App.config нужно изменить clientCertificate findValue="28E9DC2F971EBC22C8C469AE4C6A4 932496E8091" на свой отпечаток сертификата ИС (информационной системы). На форму кинул две кнопки - "Получить поставщика данных" - вызывает метод exportDataProvider. Выводит на экран сообщение с первым найденным актуальным (isActual = true) поставщиком данный (его GUID). Кнопка "Получить список справочников" вызывает метод exportNsiListRequest. Все сообщения подписываются в модуле MyBehavior.cs - там нужно поменять отпечаток сертификата на свой и пароль в методе BeforeSendRequest. Сертификаты у меня отличаются. Сертификат для подписи сообщений должен быть на организацию ОГРН и ИНН которой, совпадает с поставщиком данных (SenderId). Для второго сервиса используется SenderId из вызова первого метода. Можно в коде прописать свой. Первый метод можно вызывать без подписи сообщения. Второй требует подписи.
0
|
|
|
13 / 13 / 0
Регистрация: 25.01.2016
Сообщений: 38
|
||||||
| 04.02.2016, 10:23 | ||||||
|
Да, класс генерирую просто:
>"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\svcutil" hcs-organizations-registry-service-8.5.0.2.wsdl hcs-nsi-service-8.5.0.2.wsdl *.xsd /async /n:*,dom.gosuslugi.schema.integration /edb /out:GKHService Добавлено через 28 минут versh23, Я подписываю
1
|
||||||
|
4 / 3 / 0
Регистрация: 10.02.2016
Сообщений: 19
|
|||||||||||||||||||||
| 10.02.2016, 11:19 | |||||||||||||||||||||
|
Доброго времени суток! Занимаюсь настройкой инф. взаимодействия нашей 1С и веб-сервисов ГИС ЖКХ с помощью объекта ФабрикаXDTO. Не удается найти какой-то простой и доступный способ указания свойства Signature (что, как я понимаю, является цифровой подписью) в параметрах сообщения.
Тестирую на веб-сервисе НСИ. Не буду описывать создание объектов WSОпределение и т.п., с этим проблем нет. Перейду непосредственно к обращению к веб-сервису. сначала создаю объект WSПрокси, с помощью которого будет вызываться операция:
Ничего проще, чем заполнять каждое поле вручную, я не смог придумать/найти:
2
|
|||||||||||||||||||||
|
6 / 6 / 0
Регистрация: 24.12.2015
Сообщений: 41
|
|
| 10.02.2016, 12:19 | |
|
ViteG, "Неверный идентификатор ИС" - это ошибка не подписи бизнес данных, а ошибка соединения с ГИС ЖКХ. то есть у вас не создается защищенное соединение по ГОСТ. причиной может быть различный серфитикат который вы отправляли в ГИС ЖКХ и с помощью которого устанавливаете соединение. сравните сертификаты что отсылали и с помощью которого устанавливаете туннель.
0
|
|
|
4 / 3 / 0
Регистрация: 10.02.2016
Сообщений: 19
|
|
| 10.02.2016, 15:54 | |
|
Dr_Elvis, защищенное соединение создается с помощью программы МагПро КриптоТуннель. С этим проблем как раз нет. Кроме того, подключение к веб-сервисам тоже работает, а ошибка возникает непосредственно при обращении к операциям веб-сервиса, уже после подключения.
0
|
|
|
6 / 6 / 0
Регистрация: 24.12.2015
Сообщений: 41
|
|
| 10.02.2016, 16:34 | |
|
ViteG, то есть если отправить запрос, без подписи - всё работает корректно?
0
|
|
|
4 / 3 / 0
Регистрация: 10.02.2016
Сообщений: 19
|
|
| 10.02.2016, 16:50 | |
|
Dr_Elvis, не понял о каком запросе речь. У 1С есть объект конфигурации WSОпределение. Он, как следует из названия, заведует определениями веб-сервисов. При его создании происходит подключение к веб-сервису, и в нем хранятся все точки подключения, интерфейсы, операции и т.п. Создание определения происходит с ошибкой, если не создано защищенное соединение средствами 1С или Криптотуннелем. Я сейчас пользуюсь МагПро Криптотуннель, соединение проходит прекрасно, определение создается, в нем хранятся все данные веб-сервиса. Но когда я пытаюсь вызвать какую-то операцию веб-сервиса возникает вот эта ошибка. Поэтому я и подозреваю, что дело в подписи. Там же указываются сведения о сертификате, организации и т.п.
0
|
|
|
6 / 6 / 0
Регистрация: 24.12.2015
Сообщений: 41
|
|
| 10.02.2016, 18:00 | |
|
ViteG, а запрос exportOrgRegistry у вас проходит? вообще ошибка "Неверный идентификатор ИС" - связана с подключением. там же написано "ИС" а не поставщика данных. подпись бизнес данных осуществляется подписью поставщика, а установка соединения осуществляется посредством ЭЦП информационной системы(ИС). поэтому дело в установке соединения.
Дополню что запрос exportOrgRegistry - не требует подписи, попробуйте сначала его отправить.
1
|
|
|
4 / 3 / 0
Регистрация: 10.02.2016
Сообщений: 19
|
|
| 10.02.2016, 18:14 | |
|
Dr_Elvis, спасибо за подсказку, буду рыть в этом направлении. Отпишусь, если дело и впрямь в сертификате.
0
|
|
|
13 / 13 / 0
Регистрация: 25.01.2016
Сообщений: 38
|
|
| 11.02.2016, 07:11 | |
|
ViteG,
Попробуйте просто через SoapUI запрос отправить на exportOrgRegistry. Без подписи.
1
|
|
|
4 / 3 / 0
Регистрация: 10.02.2016
Сообщений: 19
|
|
| 11.02.2016, 07:52 | |
|
Araney, спасибо! даже не знал, что такая штука есть. Тоже попробую.
0
|
|
|
3 / 3 / 1
Регистрация: 17.01.2015
Сообщений: 15
|
|||||||
| 25.02.2016, 09:50 | |||||||
0
|
|||||||
|
13 / 13 / 0
Регистрация: 25.01.2016
Сообщений: 38
|
|
| 26.02.2016, 13:42 | |
|
Нет, руками ничего не дорабатывал, т.к. версии часто меняются и хочется максимальной автоматизации обновления. Получаемым файлом просто заменяю текущий в проекте. ISRequestHeader вроде содержится в файле hcs-basetypes-8.5.0.4.xsd. Ссылка на него в hcs-organizations-registry-service-8.5.0.2.wsdl. Только в этом сервисе он используется. В остальных используется RequestHeader. Отличаются они наличием SenderID.
При формировании прокси класса текущей папка является та, в которой все файлы wsdl и xsd.
0
|
|
|
0 / 0 / 0
Регистрация: 10.12.2015
Сообщений: 18
|
|
| 26.02.2016, 15:48 | |
|
Добрый день. Сегодня вышло обновление до 8.6.0.4. в нем были добавлены сервисы hcs-nsi-common и hcs-org-registry-common, в которые были перенесены методы не требующие SenderId. У меня по адресам эндпоинтов этих сервисов ( https://54.76.42.99:60045/ext-... rgRegistry и https://54.76.42.99:60045/ext-... /NsiCommon ) их nginx упорно выдает 404. У всех так?
0
|
|
|
3 / 3 / 0
Регистрация: 11.02.2016
Сообщений: 17
|
||
| 26.02.2016, 16:06 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 10.12.2015
Сообщений: 18
|
|
| 26.02.2016, 16:17 | |
|
Springer, есть предположение что их необходимо дополнительно просить (3 недели
) предоставить доступ к этим сервисам. Т.к. при оформлении заявки на СИТ необходимо было указывать список требуемых сервисов. "Новые" сервисы появились, но т.к. в заявке мы их не указали, то у нас их и нет. Может кто нибудь проверить это предположение? Для этого ранее необходимо было подавать заявку не на все сервисы, а сейчас проверить доступность незапрашиваемых.
0
|
|
|
3 / 3 / 0
Регистрация: 11.02.2016
Сообщений: 17
|
||
| 26.02.2016, 16:25 | ||
|
Всё-таки, криво развернули обновление СИТ. Кстати, на этот раз не приходило уведомление на почту о выпуске новой версии регламента и профилактических работах на СИТ.
0
|
||
|
0 / 0 / 0
Регистрация: 10.12.2015
Сообщений: 18
|
||
| 26.02.2016, 16:30 | ||
|
0
|
||
|
3 / 3 / 0
Регистрация: 11.02.2016
Сообщений: 17
|
|||
| 26.02.2016, 16:58 | |||
|
Добавлено через 3 минуты
0
|
|||
|
0 / 0 / 0
Регистрация: 10.12.2015
Сообщений: 18
|
||
| 26.02.2016, 17:10 | ||
|
Springer, спасибо. +1 монетка в копилку знаний)
Добавлено через 10 минут
0
|
||
| 26.02.2016, 17:10 | |
|
.NET 4.x Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (2) Интеграция с ГИС ЖКХ и подпись SOAP без Крипто .NET и stunnel Soap, Java, Гис ЖКХ
Интеграция с ГИС ЖКХ (ГЖ). 400 Bad request Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|