Аватар для NaGuWaL
17 / 14 / 0
Регистрация: 22.04.2016
Сообщений: 287

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

04.05.2017, 15:29. Показов 198850. Ответов 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
Закрытая тема Создать тему
Опции темы

Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера 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 (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru