Форум программистов, компьютерный форум, киберфорум
C#: Веб-сервисы, WCF
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.97/886: Рейтинг темы: голосов - 886, средняя оценка - 4.97
 Аватар для NaGuWaL
17 / 14 / 0
Регистрация: 22.04.2016
Сообщений: 287

Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (5)

04.05.2017, 15:29. Показов 197717. Ответов 876

Студворк — интернет-сервис помощи студентам
Предыдущая тема: Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (4)


И так мы Я и umatkot, Берёмся за реализацию всего этого ... безобразия, кто хочет присоединиться пишите в личку.

Ссылка на гидхаб проекта будет предоставлена после того как мы запилим начальную версию с более менее работающим функционалом и маном интеграции...
3
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.05.2017, 15:29
Ответы с готовыми решениями:

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

Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ
Здравствуйте! Передо мной стоит задача интеграции с системой ГИС ЖКХ (https://dom.gosuslugi.ru/) программой, написанной на языке...

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

876
1 / 1 / 0
Регистрация: 22.01.2014
Сообщений: 10
28.04.2019, 00:56
Студворк — интернет-сервис помощи студентам
nvv13, я новичок в этом деле подскажите пожалуйста в чём может быть проблема. У меня возникает ошибка {"Алгоритм ключа сертификата не поддерживается."}

КриптоПро 4.0.9963 КС2
КриптоПро 1.0.6893.0

Ошибка возникает на строчке ' var provider = (Gost3410_2012_256CryptoServiceProvider) certificate.PrivateKey;'

StackTrace:
в System.Security.Cryptography.X509Certifi cates.X509Certificate2.get_PrivateKey()
в Xades.Implementations.GostCryptoProvider .GetAsymmetricAlgorithm(X509Certificate2 certificate, String privateKeyPassword)
в Xades.XadesBesSignedXml.ComputeSignature (X509Certificate2 certificate, String privateKeyPassword)
в Xades.Implementations.GostXadesBesServic e.Sign(String xmlData, String elementId, String certificateThumbprint, String certificatePassword)
в GisGkh.Crypto.SignatureMessageInspector. GetSignElement(String messageString) в C:\svn\eias\platform\GisGkh3\GisGkh\Cryp to\SignatureMessageInspector.cs:строка 61
в GisGkh.Crypto.SignatureMessageInspector. BeforeSendRequest(Message& request, IClientChannel channel) в C:\svn\eias\platform\GisGkh3\GisGkh\Cryp to\SignatureMessageInspector.cs:строка 30
в System.ServiceModel.Dispatcher.Immutable ClientRuntime.BeforeSendRequest(ProxyRpc & rpc)
0
5 / 5 / 0
Регистрация: 14.12.2016
Сообщений: 7
28.04.2019, 06:55
ilich87, может сертификат ключа не тот, по госту 2001 ?
0
1 / 1 / 0
Регистрация: 22.01.2014
Сообщений: 10
28.04.2019, 16:05
nvv13, я создал сертификат как указано у вас https://github.com/nvv13/test_WCf_gost2012

Не понимаю в чём может быть проблема. X509Certificate2 это класс библиотеки System.Security.Cryptography.X509Certifi cates, и содержит класс AsymmetricAlgorithm. Именно тут проблема как я понимаю.
0
1 / 1 / 0
Регистрация: 22.01.2014
Сообщений: 10
28.04.2019, 16:06
nvv13,
0
1 / 1 / 0
Регистрация: 22.01.2014
Сообщений: 10
28.04.2019, 18:09
nvv13, получилось подписать на другой машине. Нехорошо конечно так оставлять, понять нужно в чём проблема. Хотя когда подключил к своему проекту опять возникла ошибка, но думаю с этим разберусь.

Добавлено через 23 минуты
Дичь конечно тут твориться.
Исследования этой темы сейчас привели меня к https://github.com/AlexMAS/GostCryptography что позволит избавиться от КриптоПро .Net. Но примера как использовать её для подписи xml по стандарту xades с сертификатом 2012 нет. Есть тут https://github.com/gizmo75rus/HCS, и у него реализован фасад по примеру того, что предлагают нам ребята из ГИС ЖКХ но с сертификатами 2001, так как базируется на старой версии https://github.com/AlexMAS/GostCryptography. Доработать можно, вопрос времени правда.
0
5 / 5 / 0
Регистрация: 14.12.2016
Сообщений: 7
28.04.2019, 23:03
ilich87, https://www.cryptopro.ru/forum... sts&t=5299

вот что то там поищите ...
может у вас есть возможность задавать вопросы на форуме крипто про
0
 Аватар для vst377
12 / 12 / 0
Регистрация: 02.06.2017
Сообщений: 75
30.04.2019, 12:18
Цитата Сообщение от ilich87 Посмотреть сообщение
nvv13, получилось подписать на другой машине. Нехорошо конечно так оставлять, понять нужно в чём проблема. Хотя когда подключил к своему проекту опять возникла ошибка, но думаю с этим разберусь.

Добавлено через 23 минуты
Дичь конечно тут твориться.
Исследования этой темы сейчас привели меня к https://github.com/AlexMAS/GostCryptography что позволит избавиться от КриптоПро .Net. Но примера как использовать её для подписи xml по стандарту xades с сертификатом 2012 нет. Есть тут https://github.com/gizmo75rus/HCS, и у него реализован фасад по примеру того, что предлагают нам ребята из ГИС ЖКХ но с сертификатами 2001, так как базируется на старой версии https://github.com/AlexMAS/GostCryptography. Доработать можно, вопрос времени правда.
Могу попробовать подсказать что-нибудь по библиотеке GostCryptography. Сегодня удалось подписать запрос к ГИС ЖКХ новым сертификатом с помощью неё и xades
0
0 / 0 / 0
Регистрация: 11.07.2016
Сообщений: 2
03.05.2019, 07:17
Коллеги, подскажите!
С новым сертификатом по новому Госту.... появилась ошибка...
(использую Крипто Про Net и xades, реализацию когда то давно здесь на форуме нашел)

Не удалось привести тип объекта "CryptoPro.Sharpei.Gost3410_2012_256Cryp toServiceProvider"
к типу "CryptoPro.Sharpei.Gost3410CryptoService Provider"

Куда копать, что переустановить?
0
 Аватар для vst377
12 / 12 / 0
Регистрация: 02.06.2017
Сообщений: 75
04.05.2019, 09:46
А CryptoPro.Sharpei поддерживает новый гост шифрования? Может нужно обновить библиотеку?

Добавлено через 29 минут
ilich87

Мое решение базируется на варианте, предложенное hhmm
(Интеграция с ГИС ЖКХ и подпись SOAP без Крипто .NET и stunnel)

Мои изменения для поддержки ГОСТ следующие:

Кликните здесь для просмотра всего текста

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
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
//- 1 -----------------------------------------------------------------
//класс для добавления подписи в WCF
public class WcfClientMessageInspector : IClientMessageInspector
{
        //...
 
        public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel)
        {
            //... 
            string SignedText;
            string MessageText = TextOfMessage(ref request);
            SignedText = Crypto.XadesBesSigner.GetSignedRequestXades(MessageText, signingCertificate); //подписание запроса
            request = CreateMessageFromString(SignedText, request.Version);
            //...
        }
 
       //...
}
 
 
//- 2 -----------------------------------------------------------------
//реализация класса крипто-провайдера на основе GostCryptography и решения от umatkot
using System.Security.Cryptography.X509Certificates;
using GostCryptography.Gost_R3410;
using GostCryptography.Config;
 
namespace Crypto.CryptoProviders
{
    public class GostCryptographyProvider : CryptoProviderBase
    {
        public GostCryptographyProvider(X509Certificate2 Certificate) 
            : base(Certificate, "GostCryptographyProvider")
        {
            GostCryptoConfig.ProviderType = (GostCryptography.Base.ProviderType)Certificate.GetPrivateKeyInfo().ProviderType;
        }
 
 
        #region Реализация интерфейса ICryptoProvider
 
        /// <summary>
        /// Посчитать хэш
        /// </summary>
        /// <param name="Data">Массив байт</param>
        /// <returns></returns>
        public override byte[] ComputeHash(byte[] Data)
        {
            return (new GostCryptography.Gost_R3411.Gost_R3411_2012_256_HashAlgorithm()).ComputeHash(Data);
        }
 
 
        /// <summary>
        /// Посчитать подпись хэша
        /// </summary>
        /// <param name="Data">Входной массив байт</param>
        /// <returns>подпись в виде массива байт</returns>
        public override byte[] ComputeSignature(byte[] Data)
        {
            var privateKey = (Gost_R3410_2012_256_AsymmetricAlgorithm)Certificate.GetPrivateKeyAlgorithm();
            return privateKey.CreateSignature(Data);
        }
 
 
        /// <summary>
        /// Посчитать хэш и подпись к нему
        /// </summary>
        /// <param name="Data">Входной массив байт</param>
        /// <param name="Hash">Хэш</param>
        /// <param name="Signature">Подпись хэша</param>
        /// <returns>true если все хорошо</returns>
        public override bool ComputeHashAndSignature(byte[] Data, out byte[] Hash, out byte[] Signature)
        {
            Hash = null;
            Signature = null;
 
            Hash = ComputeHash(Data);
            Signature = ComputeSignature(Hash);
            return true;
        }
 
 
        /// <summary>
        /// Нужно ли переворачивать подпись 
        /// </summary>
        public override bool ReverseSignature
        {
            get
            {
                return true;
            }
        }
 
        #endregion Реализация интерфейса ICryptoProvider
    }
}
 
//- 3 -----------------------------------------------------------------
//изменения в классе XadesBesSigner, который работает с библиотекой Xades
//меняем описание типа алгоритма подписи на новый ГОСТ
public static class XadesBesSigner
{
 
//...
 
        /// <summary>
        /// Иденфикатор алгоритма 2012 года, действует с 2019
        /// <DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"/>
        /// </summary>
        private const string XmlDsigGost3411UrlObsolete = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256";               
        
        /// <summary>
        /// Иденфикатор алгоритма 2012 года, действует с 2019
        /// <SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"/> 
        /// </summary>
        private const string XmlDsigGost3410UrlObsolete = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256";
 
//...
}
 
//- 4 -----------------------------------------------------------------
//последний штрих, меняем костыль в Microsoft.Xades\XadesSignedXml.cs, строка 226
//из: reference.DigestMethod = "http://www.w3.org/2001/04/xmldsig-more#gostr3411";
//в: reference.DigestMethod = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256";
2
5 / 5 / 0
Регистрация: 14.12.2016
Сообщений: 7
04.05.2019, 19:16
Цитата Сообщение от evgenykupr Посмотреть сообщение
Коллеги, подскажите!
С новым сертификатом по новому Госту.... появилась ошибка...
(использую Крипто Про Net и xades, реализацию когда то давно здесь на форуме нашел)

Не удалось привести тип объекта "CryptoPro.Sharpei.Gost3410_2012_256Cryp toServiceProvider"
к типу "CryptoPro.Sharpei.Gost3410CryptoService Provider"

Куда копать, что переустановить?
https://github.com/nvv13/test_WCf_gost2012
1
0 / 0 / 0
Регистрация: 11.07.2016
Сообщений: 2
05.05.2019, 19:01
Спасибо nvv13!
0
37 / 15 / 3
Регистрация: 15.07.2010
Сообщений: 326
08.05.2019, 05:16
Вчера высыпалась ошибка и сохраняется до сих пор:
System.ServiceModel.CommunicationExcepti on: "Ошибка при отправке запроса HTTP к https://sit02.dom.test.gosuslu... ementAsync. Возможно, это вызвано тем, что сертификат сервера не сконфигурирован с HTTP.SYS для случая HTTPS. Это может быть также вызвано несоответствием привязки безопасности между клиентом и сервером."

WebException: Базовое соединение закрыто: Непредвиденная ошибка при передаче.
IOException: Аутентификация не пройдена из-за закрытия транспортного потока удаленной стороной.
Снова ситы упали или это только у меня?
0
5 / 5 / 0
Регистрация: 14.12.2016
Сообщений: 7
08.05.2019, 07:57
Цитата Сообщение от WestSide072 Посмотреть сообщение
Снова ситы упали или это только у меня?
было уже такое, в самом начале когда ГОСТ 2012 на СИТ внедряли...


https://helpdesk.dom.gosuslugi... TEGRS-7327

Ошибка при отправке запроса HTTP к
https://sit02.dom.test.gosuslu... ementAsync
". Возможно, это вызвано тем, что сертификат сервера не сконфигурирован с HTTP.SYS для случая HTTPS.
Это может быть также вызвано несоответствием привязки безопасности между клиентом и сервером."

прикрепляю сообщение
"SignatureMessageInspector_9a823060-f24e-42a3-b589-6145662bcd32.xml"

лог
"ConsoleWriteLine_20_20190327_113026.txt "

подскажите пожалуйста, что у меня не так?


помогло обращение в поддержку.... (они починили у себя)

и таки да, проверил (2019.05.08 8:02), такая же проблема с СИТ2 ....
1
37 / 15 / 3
Регистрация: 15.07.2010
Сообщений: 326
08.05.2019, 08:13
Спасибо! Написал в саппорт, попросили запрос и ответ посмотреть. Отправил им только запрос, т.к ответ не приходит, соединение разрывается.
0
7 / 7 / 0
Регистрация: 03.02.2019
Сообщений: 44
08.05.2019, 17:21
Добавлено через 45 секунд
Цитата Сообщение от WestSide072 Посмотреть сообщение
Вчера высыпалась ошибка и сохраняется до сих пор:
System.ServiceModel.CommunicationExcepti on: "Ошибка при отправке запроса HTTP к https://sit02.dom.test.gosuslu... ementAsync. Возможно, это вызвано тем, что сертификат сервера не сконфигурирован с HTTP.SYS для случая HTTPS. Это может быть также вызвано несоответствием привязки безопасности между клиентом и сервером."
WebException: Базовое соединение закрыто: Непредвиденная ошибка при передаче.
IOException: Аутентификация не пройдена из-за закрытия транспортного потока удаленной стороной.
Та же проблема, на текущий момент...
1
37 / 15 / 3
Регистрация: 15.07.2010
Сообщений: 326
13.05.2019, 07:48
У кого-то заработали СИТы?
Саппорт просил запрос, затем файл конфигурации соединения, теперь им нужно заголовки http запроса, создается ощущение, что у них всё работает, а проблема на моей стороне =\

Собственно подскажите пожалуйста как получить отправляемые http заголовки?
Пробовал перехватить запросы fiddler'ом - он тупо не видит запросы на ГИС, другие https запросы видит.
Затем Charles, скормил ему сертификат который использую для соединения - та же история, что с fiddler'ом.

Прокси классы сгенерировал с помощью SvcUtil, может как-то программно можно получить доступ к заголовкам?
0
7 / 7 / 0
Регистрация: 03.02.2019
Сообщений: 44
13.05.2019, 09:06
Цитата Сообщение от WestSide072 Посмотреть сообщение
У кого-то заработали СИТы?
У меня пока проблема с вышеописанным исключением сохраняется. Вчера написал в саппорт, запрос приложил. Жду ответ.
1
7 / 7 / 0
Регистрация: 03.02.2019
Сообщений: 44
13.05.2019, 16:46
Тогда, судя по ответу саппорта проблема и на моей стороне тоже.

Уважаемый пользователь!

Для дальнейшего анализа Вашего обращения просьба предоставить http заголовки запроса, а также журнал туннеля (stunnel.log) (которого нет)

Добавлено через 12 минут
У кого-нибудь есть мысли по этому поводу?..
0
 Аватар для hhmm
67 / 58 / 1
Регистрация: 01.04.2016
Сообщений: 346
13.05.2019, 17:01
Если в сообщении упоминается http.sys, то проблема всего на транспортном уровне - местному КриптоПро CSP не удается договорится о шифровании.
Тут или КриптоПро протухло из-за не введенного ключа, или из-за обновления Windows.
Или не хватает каких-то промежуточных сертификатов.

В журнале событий Windows красные флажки от КриптоПро есть?
0
7 / 7 / 0
Регистрация: 03.02.2019
Сообщений: 44
13.05.2019, 17:10
Цитата Сообщение от hhmm Посмотреть сообщение
В журнале событий Windows красные флажки от КриптоПро есть?
Ошибка проверки контрольной суммы. Файл: wininet.dll. Причиной ошибки может быть обновление операционной системы или некорректная установка КриптоПро CSP. Переустановите КриптоПро CSP или обновите контрольные суммы системных библиотек в реестре, запустив с правами администратора start cpverify -rm system

Причем повторяется чуть ли не каждую секунду
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.05.2019, 17:10

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

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

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

1С и ГИС ЖКХ. Интеграция
Доброго дня, коллеги! Я думаю многие слышали о такой ГИС, как ЖКХ. Друзья, сталкивался ли кто нибудь с задачей интеграции с этой...

Интеграция с ГИС ЖКХ (ГЖ). 400 Bad request
Вводная: 1. C#. Классы proxy для работы с API генерятся утилитой SvcUtil.exe из wsdl-ек. 2. При срабатывании форматно-логического...


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

Или воспользуйтесь поиском по форуму:
680
Закрытая тема Создать тему
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru