64 / 55 / 1
Регистрация: 01.04.2016
Сообщений: 345
1
.NET 4.x

Интеграция с ГИС ЖКХ и подпись SOAP без Крипто .NET и stunnel

06.04.2017, 22:27. Показов 93905. Ответов 244

Author24 — интернет-сервис помощи студентам
Решил создать отдельную тему, так как в теме Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (4) - C# WCF уже можно заблудиться.

Причиной написания данной куклы/тестового приложения стало желание избавиться от зависимости от Крипто .NET.

За прошедший год с момента начала использования Крипто .NET у меня к нему накопился ряд претензий, таких как:
1. Работа только с одним, своим, криптопровайдером
2. Навязчивая загрузка во все приложения, даже туда, где он не нужен
Как следствие, это приводит к невозможности использования ряда приложений, таких как, например, NUnit Framework


Не хочу сказать ничего плохого в адрес разработчиков КриптоКом.
Они и сами признают на своем форуме, что внедрение чужеродных алгоритмов шифрования в операционные системы Windows это очень непростая задача.
Но все-таки в результате Крипто .NET получился, по моему опыту, настолько глючным, что пользоваться им в работе становится весьма обременительным.

Предлагаемая кукла обеспечивает работу с ГИС ЖКХ без настоятельно навязываемых Ланитом продуктов КриптоКом, таких как stunnel и Крипто .NET.
Для работы используются стандартные вызовы CryptoAPI, так что криптопровайдера установить придется,
соответствующего полученному в УЦ ключу, CryptoPro CSP или ViPNet CSP.

Что было сделано:
1. За основу была взята реализация springjazzy (https://github.com/springjazzy/Xades) выложенная с составе примера начального уровня выложенного Anvano. Учтены/приняты во внимание замечания других участников форума
2. Была написана обертка для работы с CryptoAPI (с использованием найденного куска от Microsoft), в ней был выделен интерфейс ICryptoProvider декларирующий минимально необходимый функционал для подписи
3. Реализация springjazzy из пункта 1 была подвергнута переработке в следующих направлениях:
3.1. Был выкинут весь неиспользуемый функционал класса XadesSignedXml для облегчения чтения и понимания, что там вообще происходит
3.2. Последовательным движением в глубину текстов библиотеки Xades и замены рефлексии методов .NET на куски текста Microsoft удалось избавить класс XadesSignedXml от
криптографии .NET. Вызовы криптографии .NET были заменены на вызовы трех методов ICryptoProvider из п.2

Таким образом, сейчас подпись Xades в данном приложении осуществляется следующим образом:

C#
1
2
ICryptoProvider CryptoProvider = GetCryptoProvider(SigningSertificate);
signedXml.ComputeSignature(CryptoProvider.ComputeHash, CryptoProvider.ComputeSignature, CryptoProvider.ReverseSignature);
где:
  • signedXml - экземпляр класса XadesSignedXml из модифицированной библиотеки
  • ComputeHash - функция расчета хэша вида byte[] ComputeHash(byte[] Data)
  • ComputeSignature - функция расчета подписи вида byte[] ComputeSignature(byte[] Data)
  • ReverseSignature - свойство типа bool, показывающее библиотеке, нужно ли переворачивать полученную подпись:8 Выяснилась занятная деталь: Крипто .NET и CryptoPro CSP оба выдают верные подписи (для одного и того же сертификата), но одну из них нужно зеркально перевернуть, чтобы ее принял ГИС ЖКХ. Почему там сделано - не знаю, это наверное можно спросить в КриптоКом

  • Кукла проверена на машине где установлен как Крипто .NET так и CryptoPro CSP
  • После чего Крипто .NET был удален
  • Компьютер был перезагружен для завершения удаления (два раза, так как с первого раза Крипто .NET удаляться не захотел)
  • После этого осталась работоспособной только часть, работающая через CryptoApi

С ключами Инфотекса у меня в настоящее время возможности проверить работоспособность нет, так как тестовый ключ Инфотекса уже не рабочий.

У кого есть возможность проверить, просьба сообщить о результатах.

Из имеющихся в настоящий момент не исправленных глюков - ошибка связанная с некорректным освобождением памяти при выходе при приложения. Подозреваю, что ошибка где-то в обертке CryptoAPI, но где - пока непонятно.


В прилагаемом архиве исходные тексты куклы и релизная сборка приложения.

Отзывы и конструктивная критика принимаются.

С уважением к участникам форума,
hhmm

Дополнение от 18.10.2018:

В данной теме есть и другие решения предложенные участниками, вынесены в шапку для облегчения навигации:

1. gizmo23 предложил свой вариант библиотеки.
В основу был взят тот же проект signature-demo-net. Все ссылки в сообщении.
Первоначальное обсуждение продолжалось до post10628102

2. umatkot предложил утилиту для проверки работоспособности сервера ГИС ЖКХ. Утилита (по словам автора) использует еще более усовершенствованную версию библиотеки подписи.

3. Дополнение на тему альтернативных криптопровайдеров: месяц назад один из клиентов предоставил на опыты реальный, не тестовый ключ, ViPNet CSP выданный настоящим удостоверяющим центром. Попытка прикрутить провайдера ViPNet CSP к ГИС ЖКХ успехом не увенчалась. Несмотря на то, что на машину удалось установить два криптопровайдера одновременно и каждый из них отдельно видел и успешно читал свои ключи, попытка подключиться с ключом ViPNet CSP к ППАК ГИС ЖКХ не удалась. Проблемы возникли на транспортном уровне, такие же какие бывают у Крипто .Net клиент когда обновляется .Net Framework - 'Unable establish secure SSL/TLS channel to api.dom.dosuslugi.ru'. До подписи дело не дошло.
То ли там что-то еще нужно докупать у Инфотекса, то ли ViPNet CSP не может внедриться на транспортном уровне. В общем, у меня не получилось. Потратил один день, после чего эксперименты прекратил.

Дополнение от 24.01.2018:

4. vst377 предложил набор классов реализующих работу в ГИС ЖКХ файловых сервисов.
Вложения
Тип файла: zip GisBusted.zip (4.17 Мб, 634 просмотров)
11
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2017, 22:27
Ответы с готовыми решениями:

.NET 4.x Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (2)
Начало темы здесь: https://www.cyberforum.ru/web-services-wcf/thread1615223.html umatkot, Да, к...

Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (4)
Предыдущая тема: https://www.cyberforum.ru/web-services-wcf/thread1800721.html Здравствуйте....

Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (5)
Предыдущая тема: https://www.cyberforum.ru/web-services-wcf/thread1840159.html И так мы Я и...

Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (3)
Предыдущая тема: https://www.cyberforum.ru/web-services-wcf/thread1776736.html Кто нибудь знает...

244
12 / 11 / 1
Регистрация: 18.04.2016
Сообщений: 75
22.10.2019, 15:01 181
Author24 — интернет-сервис помощи студентам
Да, соединение без тоннеля.
Скачал:
Сертификат открытого ключа для организации защищенного TLS соединения с сервисами легковесной интеграции
api.dom.gosuslugi.ru_2019.cer
Установил в локальное хранилище...
Как его теперь подсунуть в:

<basicHttpBinding>
<binding name="secureHttpBinding" sendTimeout="00:05:00" maxReceivedMessageSize="104857600">
<security mode="Transport">
<transport clientCredentialType="Certificate" realm="Basic"/>
</security>
</binding>
</basicHttpBinding>
0
64 / 55 / 1
Регистрация: 01.04.2016
Сообщений: 345
22.10.2019, 15:15  [ТС] 182
А зачем его туда подсовывать?

Его нужно положить в доверенные корневые центры сертификации.
0
12 / 11 / 1
Регистрация: 18.04.2016
Сообщений: 75
22.10.2019, 16:40 183
Хм...
Дома запустилось без танцев с бубном. Без всяких переделок и запихивания сертификатов от ГИС...
И там и там 10-ка. Единственная разница - на работе мне комп в домен загнали как раз до появления ошибки.
Не с этим ли связано?
Могут ли политики играть роль при установке соединения???
0
187 / 100 / 19
Регистрация: 15.09.2011
Сообщений: 801
23.10.2019, 02:27 184
foxwizard, да может быть всё что угодно. вообще мутная тема.
0
12 / 11 / 1
Регистрация: 18.04.2016
Сообщений: 75
23.10.2019, 06:19 185
Пока нашел в чем разница. На работе подключение в инет сделали через КСПД.
Подключаюсь напрямую к провайдеру с рабочего компа - все работает.
Через корпоративную сеть - нет.Блджади..
0
0 / 0 / 0
Регистрация: 17.10.2019
Сообщений: 24
29.10.2019, 15:42 186
Помогите начать или подскажите где посмотреть какие методы править.
Например, хочу получить информацию по дому зная ФИАС как это делается? Какие методы править, куда ФИАС кидать, как ответ получить в xml формате например? Куклу Ланит взял из топика этой ветки.

Как обновляется GisBustedWsdlWrapper.cs до актуальной версии имея hcs_wsdl_xsd_v.13.0.0.10

PS
КриптоПро, сертификат с закрытым ключом, доступ к ГИС ЖКХ ... - есть. Даже какой-то ответ приходит:

Интеграция с ГИС ЖКХ и подпись SOAP без Крипто .NET и stunnel
0
4 / 4 / 0
Регистрация: 21.04.2015
Сообщений: 45
30.10.2019, 02:26 187
Цитата Сообщение от ppivperm Посмотреть сообщение
Как обновляется GisBustedWsdlWrapper.cs до актуальной версии имея hcs_wsdl_xsd_v.13.0.0.10
Скачать ГИС ЖКХ_Интеграция_v.1x.х.х.х с сайта ГИС ЖКХ.

Зайти в папку с проектом GisBusted => WSDL (папка) .

Закинуть туда папку hcs_wsdl_xsd_v.1x.x.x.x из скачанной папки ГИС ЖКХ_Интеграция_v.1x.х.х.х

В батнике export заменить hcs_wsdl_xsd_v.1x.x.x.x на новые значения.

Запустить батник.

Добавлено через 6 минут
Цитата Сообщение от ppivperm Посмотреть сообщение
Помогите начать или подскажите где посмотреть какие методы править.
Изучите уже написанные методы в папке Workers и напишите недостающие или необходимые для вас, но помните, что в старой версии программы написаны инструкции для синхронных запросов в ГИС (отправил запрос - сразу получил ответ), сейчас ГИС так не работает, они перешли на асинхронные методы (отсылаете запрос, получаете его GUID, позже отправляете GUID запроса, а в ответ результат обработки запроса).
Я при написании пользовался инструкциями расположенными здесь, кто-то официальной документацией (Альбом ТФФ. Находится там же, где папка hcs_wsdl_xsd_v.13.0.0.10).

И вообще, полистайте форум, многое можно найти на форуме при должном желании.
1
7 / 7 / 0
Регистрация: 21.04.2017
Сообщений: 36
30.10.2019, 12:08 188
Уважаемые Umatkot, вы выложили библиотеку для подписи 2012. Но можно еще Ваш вариант функции инспектора
BeforeSendRequest, где подпись осуществляется. Просто я не уверен что мой вариант подписания:
C#
1
2
3
XDocument document = XDocument.Parse(request.ToString());
                XmlDocument SignedText = GisSignatureHelper.GetSignedRequestXades(document);                
                request = Message.CreateMessage(new XmlNodeReader(SignedText), int.MaxValue, MessageVersion.Soap11);
- безопасен. Работать он конечно работает.
Спасибо.
0
0 / 0 / 0
Регистрация: 17.10.2019
Сообщений: 24
31.10.2019, 09:20 189
Помогите сделать первый шаг работы с Куклой Ланита (обновил GisBustedWsdlWrapper.cs до актуальной версии, СПАСИБО
daniel_tlk ):
Мне надо отправить начисление в ГИС с помощью асинхронного запроса. Мои действия в "кукле":
0. Выбираю сервер; Забиваю orgPPAGUID; Выбираю "CryptoAPI ..."
1. Выбираю конечную точку "PaymentPortAsync ... ", нажимаю "Wsdl explorer"
2. Попадаю на метод InternalRun
Интеграция с ГИС ЖКХ и подпись SOAP без Крипто .NET и stunnel

Вопрос - куда мне добавлять в "куклу" свой метод, который будет вытягивать мои данные из database и делать сам запрос в ГИС, например public PaymentAsync.AckRequest SetNotificationsOfOrderExecution(){} ?

Или я в принципе что-то не правильно понимаю?
0
12 / 11 / 1
Регистрация: 18.04.2016
Сообщений: 75
31.10.2019, 10:02 190
Вот мой пример. Одна кнопка. дергает данные по дому по ФИАС
В App.config поменяй:
На свой отпечаток тут:
<add key="certificate-thumbprint" value="1463d805cd4f41577c888506c7d905680ba74999"/>
и тут
<clientCertificate findValue="1463d805cd4f41577c888506c7d905680ba74999" storeLocation="CurrentUser" storeName="My" x509FindType="FindByThumbprint"/>

Pin ключа тут
<add key="container-key" value="12345678"/>

В
private void button2_Click(object sender, EventArgs e)

header.Item = "c3f65dab-ea5d-4765-af23-83effe480999";
Поменяй на свой orgPPAGUID
Вложения
Тип файла: rar SimpleGis12.rar (5.24 Мб, 163 просмотров)
1
4 / 4 / 0
Регистрация: 21.04.2015
Сообщений: 45
07.11.2019, 10:11 191
Подскажите, как отправить в одном запросе более 1го платежного документа.

Пытаюсь отправить написав такой код:
C#
1
2
3
4
5
6
7
8
9
10
11
Request.Items = new object[]
                        {
                            true,                               //ConfirmAmountsCorrect - True => Передаваемые данные платежных документов, следует считать верными, даже если они отличаются от автоматически рассчитанных Системой значений. 
                            _options.Period.Value.Month,        //Месяц (int)
                            (short)_options.Period.Value.Year,  //Год (short)
                            payInfo,                            //importPaymentDocumentRequestPaymentDocument    : Сведения о платежных реквизитах получателя (Множественное)
                            pd                                  //importPaymentDocumentRequestPaymentInformation[] : Размещаемый платежный документ (Максимум 500)
                        };
 
 SoapPrepareQuery(Proxy.Endpoint, Proxy.ClientCredentials);
                            Proxy.importPaymentDocumentData(Header, Request, out ackRequest);
Получаю ошибку:
Ошибка при создании документа XML. Тип "GisBustedWsdlWrapper.importPaymentDocumentRequestPaymentDocument[]" не может использоваться в этом контексте.

Как указать массив платежек в запросе?
0
0 / 0 / 0
Регистрация: 17.10.2019
Сообщений: 24
07.11.2019, 11:51 192
Друзья! Научите получить ORGPPAGUID организации.
Проблема в том, что при вызове Proxy2.getState() выходит исключение. Может я в принципе что-то не так делаю?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
exportOrgRegistryRequest Request2 = null;
AckRequest Result2 = null;
Request2 = SoapRequest_Get<exportOrgRegistryRequest>();
ISRequestHeader header2 = SoapHeader_Get<ISRequestHeader>();
System.ServiceModel.Channels.Binding TargetBinding2;
System.ServiceModel.EndpointAddress TargetEndpointAddress2;
if (!SoapGetBindingByEndpointName("RegOrgAsyncPort", out TargetBinding2, out TargetEndpointAddress2))
{
return;
}
RegOrgPortsTypeAsync1Client Proxy2 = new RegOrgPortsTypeAsync1Client(TargetBinding2, TargetEndpointAddress2);
SoapPrepareQuery(Proxy2.Endpoint, Proxy2.ClientCredentials);
Request2.SearchCriteria = new[]
{
new exportOrgRegistryRequestSearchCriteria()
{
ItemsElementName = new [] {ItemsChoiceType75.OGRN},
Items = new[] { "1111101111111" }
}
};
 
//Proxy2.exportOrgRegistryAsync(header2,Request2);
Proxy2.exportOrgRegistry(header2, Request2, out Result2);
//Proxy2.exportOrgRegistry(header2, Request2, out Result2);
 
var MessageGUID = Result2.Ack.MessageGUID;
 
var getstateRequest = new getStateRequest()
{
MessageGUID = MessageGUID
};
 
GisBustedWsdlWrapper.getStateResult11 vgetStateResult = new GisBustedWsdlWrapper.getStateResult11();
Proxy2.getState(header2, getstateRequest, out vgetStateResult);
0
64 / 55 / 1
Регистрация: 01.04.2016
Сообщений: 345
07.11.2019, 12:53  [ТС] 193
Интеграция с ГИС ЖКХ и подпись SOAP без Крипто .NET и stunnel
1
0 / 0 / 0
Регистрация: 17.10.2019
Сообщений: 24
08.11.2019, 12:47 194
Научите Fiddler пользоваться.
Тренируюсь на отправке запроса по получению справочника 51 (услуги ЖКХ) Использую Куклу ланит указанную в топике темы. Заменил в App.config "TransportCertificateThumbprint", "SigningCertificateThumbprint", указал свой "orgPPAGUID"

Отправка запроса Proxy.exportDataProviderNsiItem(header, Request, out Result); проходит нормально, получаю MessageGUID Пытаюсь получить ответ Proxy.getState(header, getstateRequest, out vgetStateResult); выходит исключение (видимо XML не получаю)
Интеграция с ГИС ЖКХ и подпись SOAP без Крипто .NET и stunnel


Помогите разобраться в коде. Может что-то элементарное не вижу?
И ещё. Хочу отследить отправляемые\получаемые запросы через fiddler но он мои запросы не видит. Его как-то надо особенно настраивать?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
            exportDataProviderNsiItemRequest Request = null;
            //exportNsiItemResult Result = null;
            AckRequest Result = null;
 
            Request = SoapRequest_Get<exportDataProviderNsiItemRequest>();
 
            RequestHeader header = SoapHeader_Get<RequestHeader>();
 
            System.ServiceModel.Channels.Binding TargetBinding;
            System.ServiceModel.EndpointAddress TargetEndpointAddress;
 
            if (!SoapGetBindingByEndpointName("NsiPortAsync", out TargetBinding, out TargetEndpointAddress))
                {
                return;
                }
 
            //NsiPortsTypeClient Proxy = new NsiPortsTypeClient(TargetBinding, TargetEndpointAddress);
            NsiPortsTypeAsyncClient Proxy = new NsiPortsTypeAsyncClient(TargetBinding, TargetEndpointAddress);
 
            
            // настраиваем экземпляр класса клиента для работы
            SoapPrepareQuery(Proxy.Endpoint, Proxy.ClientCredentials);
 
            Request.RegistryNumber = m_RegistryNumber;
 
            // Обращение к службе
            try
                {
                Proxy.exportDataProviderNsiItem(header, Request, out Result);
                    var MessageGUID = Result.Ack.MessageGUID;
 
                    var getstateRequest = new getStateRequest()
                    {
                        MessageGUID = MessageGUID
                    };
 
 
                    GisBustedWsdlWrapper.getStateResult8 vgetStateResult = new GisBustedWsdlWrapper.getStateResult8();
                    Proxy.getState(header, getstateRequest, out vgetStateResult);
                    var aaa = vgetStateResult.Items;
 
                }
            catch (Exception e)
                {
                GisGlobals.ErrorMessageBox(e.ToString());
                }
0
0 / 0 / 0
Регистрация: 17.10.2019
Сообщений: 24
10.01.2020, 08:43 195
Прешли на ключ ГОСТ 2012.
Перестала работать подпись (использую проект GisBasted выложенный в топике).
Попробовал создать по аналогии класс CryptoProGost34102012Provider, задал константы для нового ГОСТ. Но выходит ошибка "Ошибка формата подписи запроса" "AUT011005"

Помогите организовать подпись по новому ГОСТ

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class CryptoProGost34102012Provider : CryptoApiProviderBase
    {
        /// <summary>
        /// Алгоритм хэширования в соответствии с ГОСТ Р 34.11-2012/256
        /// </summary>
        private const int CALG_GR3411 = 32801;//32798;
 
        /// <summary>
        /// Длина хэша в байтах
        /// </summary>
        private const int GR3411LEN = 32;//32;
 
        #region Константы инициализации
 
        /// <summary>
        /// Название провайдера в реестре
        /// </summary>
        public const string InitProviderName = "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider";
 
        /// <summary>
        /// Идентификатор провайдера в реестре
        /// </summary>
        public const uint InitProviderType = 80;//75;
 
        #endregion Константы инициализации
 
...
0
187 / 100 / 19
Регистрация: 15.09.2011
Сообщений: 801
13.01.2020, 02:44 196
Цитата Сообщение от ppivperm Посмотреть сообщение
Хочу отследить отправляемые\получаемые запросы через fiddler но он мои запросы не видит. Его как-то надо особенно настраивать?
Его можно запустить не как системный прокси и натравить на него объект, который выполняет запросы - в случае WCF - это настройка в конфиге -
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
<system.net>
    <defaultProxy useDefaultCredentials="false" enabled="false">
      <proxy autoDetect="True" bypassonlocal="True" proxyaddress="http://localhost:3128" />
      <!--<proxy autoDetect="True" bypassonlocal="True" proxyaddress="http://vld-180:3128" />-->
    </defaultProxy>
    <!--<settings>
      <servicePointManager checkCertificateName="false" checkCertificateRevocationList="false" expect100Continue="false" />
    </settings>-->
  </system.net>


В случае WebRequest(если через него реализуете руками обработку) то можно так
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public List<T> GetGisData<T>(string baseUrl, string codeString)
        {
            var request = WebRequest.Create($"{baseUrl}?{codeString}") as HttpWebRequest;
 
            if (request == null) return null;
 
            request.UserAgent =
                "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36";
 
            request.Proxy = new WebProxy
            {
                Address = new Uri("http://127.0.0.1:3128"),
                UseDefaultCredentials = true,
                BypassProxyOnLocal = true
            };
 
            return ExecuteRequestAndConvertResponse<T>(request);
        }
Миниатюры
Интеграция с ГИС ЖКХ и подпись SOAP без Крипто .NET и stunnel   Интеграция с ГИС ЖКХ и подпись SOAP без Крипто .NET и stunnel  
1
187 / 100 / 19
Регистрация: 15.09.2011
Сообщений: 801
13.01.2020, 02:45 197
ppivperm, но Fiddler будет работать только с СИТами, так как для PPAK потребуется устанавливать КриптоПро.НЭТ, так как Fiddler .NET приложение и он не будет распознавать алгоритм при рукопожатии.
1
0 / 0 / 0
Регистрация: 17.10.2019
Сообщений: 24
15.01.2020, 08:10 198
Переход с ГОСТ 2001 на ГОСТ 2012 "Ошибка формата подписи запроса" "AUT011005"
Тренируюсь на Экспортировать данные справочников поставщика информации (1,51,59)

заменил алгоритм подписи "http://www.w3.org/2001/04/xmldsig-more#gostr3411" на "urn:ietfarams:xml:ns:cpxmlsec:algorithms:gostr34112012-256" ... получил XML

Что не так то ... ?


XML до подписи:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<Action xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none" s:mustUnderstand="1">urn:exportDataProviderNsiItem</Action>
<h:RequestHeader xmlns="http://dom.gosuslugi.ru/schema/integration/base/" xmlns:h="http://dom.gosuslugi.ru/schema/integration/base/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Date>2020-01-15T08:53:18.8090016+05:00</Date>
  <MessageGUID>e531a69a-b70e-428b-ade9-8732b4dd87a2</MessageGUID>
  <orgPPAGUID>8967543c-7654-4242-9e9f-79c48e0f4jkl</orgPPAGUID>
  <IsOperatorSignature>true</IsOperatorSignature>
</h:RequestHeader>
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <exportDataProviderNsiItemRequest xmlns="http://dom.gosuslugi.ru/schema/integration/nsi/" xmlns:p5="http://dom.gosuslugi.ru/schema/integration/base/" p5:version="10.0.1.2" Id="signed-data-container">
  <RegistryNumber>1</RegistryNumber>
  </exportDataProviderNsiItemRequest>
</s:Body>
</s:Envelope>
XML после подписи:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
<?xml version="1.0" encoding="UTF-8"?>
 
-<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
 
 
-<s:Header>
 
<Action xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none" s:mustUnderstand="1">urn:exportDataProviderNsiItem</Action>
 
 
-<h:RequestHeader xmlns="http://dom.gosuslugi.ru/schema/integration/base/" xmlns:h="http://dom.gosuslugi.ru/schema/integration/base/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 
<Date>2020-01-15T08:53:18.8090016+05:00</Date>
 
<MessageGUID>e531a69a-b70e-428b-ade9-8732b4dd87a2</MessageGUID>
 
<orgPPAGUID>8967543c-7654-4242-9e9f-79c48e0f4jkl</orgPPAGUID>
 
<IsOperatorSignature>true</IsOperatorSignature>
 
</h:RequestHeader>
 
</s:Header>
 
 
-<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 
 
-<exportDataProviderNsiItemRequest xmlns="http://dom.gosuslugi.ru/schema/integration/nsi/" xmlns:p5="http://dom.gosuslugi.ru/schema/integration/base/" p5:version="10.0.1.2" Id="signed-data-container">
 
 
-<ds:Signature Id="xmldsig-dc05fa8a-23f7-4b10-a5dd-b2cd827cc35a" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
 
 
-<ds:SignedInfo>
 
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
 
<ds:SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"/>
 
 
-<ds:Reference Id="xmldsig-dc05fa8a-23f7-4b10-a5dd-b2cd827cc35a-ref0" URI="#signed-data-container">
 
 
-<ds:Transforms>
 
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
 
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
 
</ds:Transforms>
 
<ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"/>
 
<ds:DigestValue>C09wUtyn7TuTX3JSvOK1h3tb1Le99jzOPhpt/aDoBqc=</ds:DigestValue>
 
</ds:Reference>
 
 
-<ds:Reference URI="#xmldsig-dc05fa8a-23f7-4b10-a5dd-b2cd827cc35a-signedprops" Type="http://uri.etsi.org/01903#SignedProperties">
 
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34112012-256"/>
 
<ds:DigestValue>NIQ6BMSd/aM7ld3lNDAThMWVJ2RSuPbOEu9l5W0Ljaw=</ds:DigestValue>
 
</ds:Reference>
 
</ds:SignedInfo>
 
<ds:SignatureValue Id="xmldsig-dc05fa8a-23f7-4b10-a5dd-b2cd827cc35a-sigvalue">zCyY8jGM46vq3uqiyV0V4XI12ha8x5YurEad9rSzGTBlTMpMvaJmsLsweM05bTZWjp/2prPVfZyolP5/1cO9Hg==</ds:SignatureValue>
 
 
-<ds:KeyInfo>
 
 
-<ds:X509Data>
 
<ds:X509Certificate>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</ds:X509Certificate>
 
</ds:X509Data>
 
</ds:KeyInfo>
 
 
-<ds:Object>
 
 
-<xades:QualifyingProperties xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" xmlns:xades141="http://uri.etsi.org/01903/v1.4.1#" Target="#xmldsig-dc05fa8a-23f7-4b10-a5dd-b2cd827cc35a">
 
 
-<xades:SignedProperties Id="xmldsig-dc05fa8a-23f7-4b10-a5dd-b2cd827cc35a-signedprops">
 
 
-<xades:SignedSignatureProperties>
 
<xades:SigningTime>2020-01-15T08:56:55.107+05:00</xades:SigningTime>
 
 
-<xades:SigningCertificate>
 
 
-<xades:Cert>
 
 
-<xades:CertDigest>
 
<ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"/>
 
<ds:DigestValue>cG8T1OvTKiaWjvzS9qH6WsYyob3aalGhB7bAbhkp88Q=</ds:DigestValue>
 
</xades:CertDigest>
 
 
-<xades:IssuerSerial>
 
<ds:X509IssuerName>1.2.840.113549.1.9.1=ca_tensor@tensor.ru, 1.2.643.100.1=1027600787994, 1.2.643.3.131.1.1=007605016030, C=RU, ST=76 Ярославская область, L=г. Ярославль, STREET=Московский проспект\, д. 12, 2.5.4.11=Удостоверяющий центр, O=ООО \"КОМПАНИЯ \"ТЕНЗОР\", CN=ООО \"КОМПАНИЯ \"ТЕНЗОР\"</ds:X509IssuerName>
 
<ds:X509SerialNumber>490862464404868580902637470314362256789</ds:X509SerialNumber>
 
</xades:IssuerSerial>
 
</xades:Cert>
 
</xades:SigningCertificate>
 
</xades:SignedSignatureProperties>
 
</xades:SignedProperties>
 
</xades:QualifyingProperties>
 
</ds:Object>
 
</ds:Signature>
 
<RegistryNumber>1</RegistryNumber>
 
</exportDataProviderNsiItemRequest>
 
</s:Body>
 
</s:Envelope>
0
187 / 100 / 19
Регистрация: 15.09.2011
Сообщений: 801
22.01.2020, 16:12 199
Вот допилка Microsoft реализации. Уверен, что SOAP UI намного дальше продвинулся, но всё равно, хоть что-то,
Вложения
Тип файла: rar Svc2CodeConverter.rar (1.98 Мб, 64 просмотров)
1
0 / 0 / 0
Регистрация: 24.01.2020
Сообщений: 10
24.01.2020, 21:13 200
Спасите плз ..всё время {"Не удается найти сертификат X.509 с помощью следующих условий поиска: StoreName "My", StoreLocation "CurrentUser", FindType "FindByThumbprint", FindValue "ed 01 9b ac 37 f0 41 ab 06 6e 88 60 5b 76 97 28 5d 25 9d af"."}

Что не так?
Миниатюры
Интеграция с ГИС ЖКХ и подпись SOAP без Крипто .NET и stunnel  
0
24.01.2020, 21:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.01.2020, 21:13
Помогаю со студенческими работами здесь

Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ
Здравствуйте! Передо мной стоит задача интеграции с системой ГИС ЖКХ...

Осуществить подпись SOAP, по стандартам ГИС ГМП, принятого через TCP сокет
Здравствуйте. Требуется осуществить подпись SOAP, по стандартам ГИС ГМП, принятого через тсп сокет....

Ошибки интеграции ГИС ЖКХ
Я много тут читал форум по интеграции ГИС. На старте, впрочем, как и в последствии возникает много...

Soap, Java, Гис ЖКХ
Добрый день! Имеет ли кто опыт работы с soap в Java? Поставлена задача наладить работу с ГИС ЖКХ,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
200
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru