|
1 / 1 / 0
Регистрация: 16.12.2015
Сообщений: 1
|
||||||||||||||||
.NET 4.x Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ16.12.2015, 11:46. Показов 174750. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|