Форум программистов, компьютерный форум, киберфорум
C#: Веб-сервисы, WCF
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.61/847: Рейтинг темы: голосов - 847, средняя оценка - 4.61
1 / 1 / 0
Регистрация: 16.12.2015
Сообщений: 1
.NET 4.x

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

16.12.2015, 11:46. Показов 175174. Ответов 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 сообщения
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
123
124
125
126
127
128
129
class ServiceClientBehavior : IEndpointBehavior, IClientMessageInspector
{
    public object BeforeSendRequest(ref Message request, IClientChannel channel)
    {
        XmlDocument doc = new XmlDocument();
        MemoryStream ms = new MemoryStream();
        XmlWriter writer = XmlWriter.Create(ms);
        request.WriteMessage(writer);
        writer.Flush();
        ms.Position = 0;
        doc.Load(ms);
        
        SignXml(doc);
        
        ms.SetLength(0);
        writer = XmlWriter.Create(ms);
        doc.WriteTo(writer);
        writer.Flush();
        ms.Position = 0;
        XmlReader reader = XmlReader.Create(ms);
        request = Message.CreateMessage(reader, int.MaxValue, request.Version);
 
        return null;
    }
    
    void SignXml(XmlDocument doc)
    {
        doc.PreserveWhitespace = true;
 
        // Получение элемента из тела сообщения
        var requestNode = doc.DocumentElement.ChildNodes[1].ChildNodes[0];
        var signRequestNode = SignRequest(requestNode);
 
        var body = requestNode.ParentNode;
        body.RemoveChild(requestNode);
        body.AppendChild(signRequestNode);
    }
    XmlNode SignRequest(XmlNode reqNode)
    {
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.PreserveWhitespace = true;
        xmlDoc.AppendChild(xmlDoc.ImportNode(reqNode, true));
 
        var signedXml = new SignedXML(xmlDoc);
        signedXml.SigningKey = certificate.PrivateKey;
 
        KeyInfo keyInfo = new KeyInfo();
        keyInfo.AddClause(new KeyInfoX509Data(certificate));
        signedXml.KeyInfo = keyInfo;
 
        signedXml.Signature.Id = "SignatureId";
 
        #region Создание DataObject
        {
            XmlElement SignaturePropertiesRoot;
            XmlElement QualifyingPropertiesRoot;
            string xadesURI = "http://uri.etsi.org/01903/v1.3.2#";
            string dsURI = "http://www.w3.org/2000/09/xmldsig#";
 
            QualifyingPropertiesRoot = xmlDoc.CreateElement("xades", "QualifyingProperties", xadesURI);
            QualifyingPropertiesRoot.SetAttribute("Target", "#SignatureId");
 
            SignaturePropertiesRoot = xmlDoc.CreateElement("xades", "SignedProperties", xadesURI);
            SignaturePropertiesRoot.SetAttribute("Id", "SignedPropertiesId");
 
            XmlElement SignedSignatureProperties = xmlDoc.CreateElement("xades", "SignedSignatureProperties", xadesURI);
 
            XmlElement timestamp = xmlDoc.CreateElement("xades", "SigningTime", xadesURI);
            timestamp.InnerText = XmlConvert.ToString(DateTimeOffset.Now);
            SignedSignatureProperties.AppendChild(timestamp);
 
            XmlElement SigningCertificate = xmlDoc.CreateElement("xades", "SigningCertificate", xadesURI);
            XmlElement Cert = xmlDoc.CreateElement("xades", "Cert", xadesURI);
            XmlElement CertDigest = xmlDoc.CreateElement("xades", "CertDigest", xadesURI);
 
            XmlElement DigestMethod = xmlDoc.CreateElement("ds", "DigestMethod", dsURI); DigestMethod.SetAttribute("Algorithm", "http://www.w3.org/2001/04/xmldsig-more#gostr3411");
            XmlElement DigestValue = xmlDoc.CreateElement("ds", "DigestValue", dsURI); DigestValue.InnerText = ComputeGostHash(this.ClientCertificate.RawData);
            CertDigest.AppendChild(DigestMethod);
            CertDigest.AppendChild(DigestValue);
            Cert.AppendChild(CertDigest);
 
            XmlElement IssuerSerial = xmlDoc.CreateElement("xades", "IssuerSerial", xadesURI);
            XmlElement X509IssuerName = xmlDoc.CreateElement("ds", "X509IssuerName", dsURI); X509IssuerName.InnerText = GetIssuerName(certificate);
            XmlElement X509SerialNumber = xmlDoc.CreateElement("ds", "X509SerialNumber", dsURI); X509SerialNumber.InnerText = GetSerialNumber(certificate);
            IssuerSerial.AppendChild(X509IssuerName);
            IssuerSerial.AppendChild(X509SerialNumber);
            Cert.AppendChild(IssuerSerial);
 
            SigningCertificate.AppendChild(Cert);
            SignedSignatureProperties.AppendChild(SigningCertificate);
 
            SignaturePropertiesRoot.AppendChild(SignedSignatureProperties);
            QualifyingPropertiesRoot.AppendChild(SignaturePropertiesRoot);
            DataObject dataObject = new DataObject
            {
                Data = QualifyingPropertiesRoot.SelectNodes("."),
            };
            signedXml.AddObject(dataObject);
        }
        #endregion
 
        signedXml.SignedInfo.SignatureMethod = "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411";
        signedXml.SignedInfo.CanonicalizationMethod = "http://www.w3.org/TR/2001/REC-xml-c14n-20010315";
 
        var reference = new Reference();
        reference.Uri = "#RequestId";
        reference.DigestMethod = "http://www.w3.org/2001/04/xmldsig-more#gostr3411";
        reference.AddTransform(new XmlDsigEnvelopedSignatureTransform());
        reference.AddTransform(new XmlDsigExcC14NTransform());
        signedXml.AddReference(reference);
 
        reference = new Reference();
        reference.Uri = "#SignedPropertiesId";
        reference.DigestMethod = "http://www.w3.org/2001/04/xmldsig-more#gostr3411";
        reference.Type = "http://uri.etsi.org/01903#SignedProperties";
        reference.AddTransform(new XmlDsigEnvelopedSignatureTransform());
        reference.AddTransform(new XmlDsigExcC14NTransform());
        signedXml.AddReference(reference);
 
        signedXml.ComputeSignature();
 
        XmlElement signatureNode = signedXml.GetXml();
        xmlDoc.DocumentElement.PrependChild(xmlDoc.ImportNode(signatureNode, true));
 
        if (!VerifyXml(xmlDoc))
            throw new Exception("Подпись не проходит проверку.");
        return reqNode.OwnerDocument.ImportNode(xmlDoc.DocumentElement, true);
    }
}

В результате после подписи элемента "exportNsiItemRequest" SOAP-сообщение выглядит следующим образом:
XML. Подписанное SOAP сообщение
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
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Header>
        <Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">urn:exportNsiItem</Action>
        <h:RequestHeader xmlns="http://dom.gosuslugi.ru/schema/integration/7.1.0.2/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:h="http://dom.gosuslugi.ru/schema/integration/7.1.0.2/">
            <Date>2015-12-16T16:12:47.9885439+10:00</Date>
            <MessageGUID>c7a1d946-9fcf-4ebc-9c08-20ebe81179cf</MessageGUID>
            <SenderID>387142bd-4ff7-4d15-ab09-18b3d99fd9bd</SenderID>
        </h:RequestHeader>
    </s:Header>
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <exportNsiItemRequest Id="RequestId" xmlns="http://dom.gosuslugi.ru/schema/integration/7.1.0.2/nsi/">
            <Signature Id="SignatureId" xmlns="http://www.w3.org/2000/09/xmldsig#">
                <SignedInfo>
                    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
                    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411" />
                    <Reference URI="#RequestId">
                        <Transforms>
                            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
                            <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
                        </Transforms>
                        <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411" />
                        <DigestValue>fpTlCLCz9/78q4Zpng9eAiCZuaHP51fCXfllN2TeFPw=</DigestValue>
                    </Reference>
                    <Reference URI="#SignedPropertiesId" Type="http://uri.etsi.org/01903#SignedProperties">
                        <Transforms>
                            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
                            <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
                        </Transforms>
                        <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411" />
                        <DigestValue>9sBDvpcyxJLVxibQGy280Rz/MlcESescb6k6MEGKreQ=</DigestValue>
                    </Reference>
                </SignedInfo>
                <SignatureValue>...</SignatureValue>
                <KeyInfo>
                    <X509Data>
                        <X509Certificate>...</X509Certificate>
                    </X509Data>
                </KeyInfo>
                <Object>
                    <xades:QualifyingProperties Target="#SignatureId" xmlns:xades="http://uri.etsi.org/01903/v1.3.2#">
                        <xades:SignedProperties Id="SignedPropertiesId">
                            <xades:SignedSignatureProperties>
                                <xades:SigningTime>2015-12-16T16:13:13.4750017+10:00</xades:SigningTime>
                                <xades:SigningCertificate>
                                    <xades:Cert>
                                        <xades:CertDigest>
                                            <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" />
                                            <ds:DigestValue xmlns:ds="http://www.w3.org/2000/09/xmldsig#">B2/4UjEeZwUG0c+mlEfnAZIy8mlbGpkOp4L+jPkgcVY=</ds:DigestValue>
                                        </xades:CertDigest>
                                        <xades:IssuerSerial>
                                            <ds:X509IssuerName xmlns:ds="http://www.w3.org/2000/09/xmldsig#">cn=CRYPTO-PRO Test Center 2,o=CRYPTO-PRO LLC,l=Moscow,c=RU,1.2.840.113549.1.9.1=support@cryptopro.ru</ds:X509IssuerName>
                                            <ds:X509SerialNumber xmlns:ds="http://www.w3.org/2000/09/xmldsig#">401416565317479933092244230678231137456309019</ds:X509SerialNumber>
                                        </xades:IssuerSerial>
                                    </xades:Cert>
                                </xades:SigningCertificate>
                            </xades:SignedSignatureProperties>
                        </xades:SignedProperties>
                    </xades:QualifyingProperties>
                </Object>
            </Signature>
            <RegistryNumber>221</RegistryNumber>
        </exportNsiItemRequest>
    </s:Body>
</s:Envelope>

Проблема заключается в том, что ответ от сервера приходит следующий:
ru.lanit.security.crypto.CryptoException : ЭП не прошла проверку: Invalid XML Signature
Текст ответного сообщения следующий:
XML. SOAP-ответ от сервера
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
<soap:Envelope xmlns:ns2="http://dom.gosuslugi.ru/schema/integration/7.1.0.2/" xmlns:ns3="http://www.w3.org/2000/09/xmldsig#" xmlns:ns5="http://dom.gosuslugi.ru/schema/integration/7.1.0.2/nsi/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header>
        <ns2:ResultHeader>
            <ns2:Date>2015-12-16T09:14:28.819+03:00</ns2:Date>
            <ns2:MessageGUID>c7a1d946-9fcf-4ebc-9c08-20ebe81179cf</ns2:MessageGUID>
        </ns2:ResultHeader>
    </soap:Header>
    <soap:Body>
        <ns5:exportNsiItemResult Id="signed-data-container">
            <ds:Signature Id="xmldsig-3208628d-03cc-4576-895d-ea6d78b1b6dd" 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="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411" />
                    <ds:Reference 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="http://www.w3.org/2001/04/xmldsig-more#gostr3411" />
                        <ds:DigestValue>iqCeIlUfsqxdZRuMTjvYKWBTVOtSNrJIYledBG8LrWA=</ds:DigestValue>
                    </ds:Reference>
                    <ds:Reference Type="http://uri.etsi.org/01903#SignedProperties" URI="#xmldsig-3208628d-03cc-4576-895d-ea6d78b1b6dd-signedprops">
                        <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411" />
                        <ds:DigestValue>yASmvpbUBqEPr1Vp+qzYjXhzzXymC9ggqUZZ8GbBVkI=</ds:DigestValue>
                    </ds:Reference>
                </ds:SignedInfo>
                <ds:SignatureValue>...</ds:SignatureValue>
                <ds:KeyInfo>
                    <ds:X509Data>
                        <ds:X509Certificate>...</ds:X509Certificate>
                    </ds:X509Data>
                </ds:KeyInfo>
                <ds:Object>
                    <xades:QualifyingProperties Target="#xmldsig-3208628d-03cc-4576-895d-ea6d78b1b6dd" xmlns:xades="http://uri.etsi.org/01903/v1.3.2#">
                        <xades:SignedProperties Id="xmldsig-3208628d-03cc-4576-895d-ea6d78b1b6dd-signedprops">
                            <xades:SignedSignatureProperties>
                                <xades:SigningTime>2015-12-16T09:14:28.870+03:00</xades:SigningTime>
                                <xades:SigningCertificate>
                                    <xades:Cert>
                                        <xades:CertDigest>
                                            <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411" />
                                            <ds:DigestValue>Sz5+eJyswooXj8h3A5bhMbPG61QPExSKXuw+ZLzyeQ8=</ds:DigestValue>
                                        </xades:CertDigest>
                                        <xades:IssuerSerial>
                                            <ds:X509IssuerName>cn=CRYPTO-PRO Test Center 2,o=CRYPTO-PRO LLC,l=Moscow,c=RU,1.2.840.113549.1.9.1=support@cryptopro.ru</ds:X509IssuerName>
                                            <ds:X509SerialNumber>401416477754091206680439394611221196150735163</ds:X509SerialNumber>
                                        </xades:IssuerSerial>
                                    </xades:Cert>
                                </xades:SigningCertificate>
                            </xades:SignedSignatureProperties>
                        </xades:SignedProperties>
                    </xades:QualifyingProperties>
                </ds:Object>
            </ds:Signature>
            <ns2:ErrorMessage>
                <ns2:ErrorCode>AUTH01105</ns2:ErrorCode>
                <ns2:Description>Ошибка формата подписи запроса</ns2:Description>
                <ns2:StackTrace>ru.lanit.hcs.integration.common.exception.OperationProcessorException: ЭП не прошла проверку: Invalid XML Signature</ns2:StackTrace>
            </ns2:ErrorMessage>
        </ns5:exportNsiItemResult>
    </soap:Body>
</soap:Envelope>


Подскажите пожалуйста:
1) Как сделать валидную подпись, которая будет проходить проверку сервером, используя WCF ?
2) Как с помощью средств CryptoPro.NET отказаться от использования «МагПро КриптоТуннель» ?
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.12.2015, 11:46
Ответы с готовыми решениями:

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

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

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

999
3 / 3 / 1
Регистрация: 17.01.2015
Сообщений: 15
17.03.2016, 06:00
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от springjazzy Посмотреть сообщение
У меня после семинара мысль поселилась, что может вообще ничего не делать раньше апреля пока они версию долей не изменят. Просто дома то мы уже шлем на промке, а доли это просто нереально.
Имеется в виду размещении долей собственности, а разве эти данные не Росреестр должен размещать?
0
2 / 1 / 0
Регистрация: 11.03.2016
Сообщений: 7
17.03.2016, 10:15
>Планируешь доработать метод проверки подписи?
Что именно доработать? Отказаться от CryptoPro.NET - есть мысли как делать, пока времени по работе не хватает.

>У меня предложение есть. Может организовать gitter на основе твоего репозитория?
Можно да.

Добавлено через 6 минут
>Имеется в виду размещении долей собственности, а разве эти данные не Росреестр должен размещать?
ЕГРП без персональных данных пользователя вряд ли сможет автоматически найти доли по дому. Косвенно на это указывает еще то, что они сказали, что если персональные данные не заполнены, то человек в личном кабинете не сможет найти свою собственность пока сам ее не найдет в поиске и потом свяжет себя с ней.

Добавлено через 4 минуты
Ланит выложил в открытый доступ версию подписи сообщения на Java - https://github.com/Good-Samaritan/signature-demo. Для работы требуется купить СКЗИ Trusted Java. Почему именно требуется - нет триального периода вообще.
0
0 / 0 / 0
Регистрация: 21.01.2016
Сообщений: 20
17.03.2016, 11:16
Цитата Сообщение от lonely_tramp Посмотреть сообщение
У меня предложение есть. Может организовать gitter на основе твоего репозитория? Для более быстрой коммуникации в борьбе с этим чудовищем).
Отличная идея!

Цитата Сообщение от springjazzy Посмотреть сообщение
Просто дома то мы уже шлем на промке
Можете поделиться скоростью работы? проверка дома+импорт
0
2 / 1 / 0
Регистрация: 11.03.2016
Сообщений: 7
17.03.2016, 11:22
Цитата Сообщение от versh23 Посмотреть сообщение
Можете поделиться скоростью работы? проверка дома+импорт
Не могу. Массово не слали - у нас УК не могут до сих пор данные по ДУ завести, которые необходимы для ГИС ЖКХ. Так единовременно отослали. С массовой отправкой домов будет большая проблема с выверкой FiasGuid.
0
0 / 0 / 0
Регистрация: 21.01.2016
Сообщений: 20
17.03.2016, 11:27
lonely_tramp, Слышал, говорили что синхронные методы исключат, оставят только асинхронные. Было такое?

Добавлено через 1 минуту
springjazzy, Да, с этим отдельная проблема) ну а на один дом? у меня выходила только проверка дома на 1 секунду обработки, а еще импорт после этого...
0
10 / 10 / 0
Регистрация: 29.02.2016
Сообщений: 45
17.03.2016, 11:36
Цитата Сообщение от springjazzy Посмотреть сообщение
Вы бы хоть мне звездочек наставили в гите ))
Поставил хотя не знаю что дает

Цитата Сообщение от springjazzy Посмотреть сообщение
Просто дома то мы уже шлем на промке
А "вы", это какой тип поставщика информации?

Там, на семинаре, не рассказывали о схеме работы?! На сайте есть список поставщиков информации, для каждого региона/области определён какой-нибудь орган, для нас - ГЖИ и не ясно как в итоге будет построена работа, от местных УК/ТСЖ в ГЖИ, а от них в ГИС или напрямую в ГИС, но тогда почему существует этот список поставщиков информации.

Цитата Сообщение от lonely_tramp Посмотреть сообщение
Звучало это немного странно, потому что у них сама ГИС ЖКХ написана на Java
Да, учитывая, что в doc файле рекомендаций написано:
Для поддержки подписания по ГОСТ по стандартам xmldsig/XAdES - доработанный до поддержки xades-bes Apache Santuario.
а это либа для Java/С++.
0
0 / 0 / 0
Регистрация: 10.12.2015
Сообщений: 18
17.03.2016, 11:42
Цитата Сообщение от versh23 Посмотреть сообщение
Слышал, говорили что синхронные методы исключат, оставят только асинхронные. Было такое?
Было такое. Но я думаю это было слишком резкое не обдуманое заявление. Они идеалисты.
springjazzy, gitter комнату может создать только владелец репозитория, ждем =)
0
2 / 1 / 0
Регистрация: 11.03.2016
Сообщений: 7
17.03.2016, 11:49
Цитата Сообщение от ndbn Посмотреть сообщение
Поставил хотя не знаю что дает
Во фрилансе ценится для иностранных компаний.

Цитата Сообщение от ndbn Посмотреть сообщение
А "вы", это какой тип поставщика информации?
Региональная информационная система.

Цитата Сообщение от ndbn Посмотреть сообщение
Там, на семинаре, не рассказывали о схеме работы?! На сайте есть список поставщиков информации, для каждого региона/области определён какой-нибудь орган, для нас - ГЖИ и не ясно как в итоге будет построена работа, от местных УК/ТСЖ в ГЖИ, а от них в ГИС или напрямую в ГИС, но тогда почему существует этот список поставщиков информации.
Вероятность, что ГЖИ будет сама чтото посылать в ГИС я оцениваю как 0.0001. ГЖИ будут нагибать УК чтобы они слали данные в ГИС - это да.

Добавлено через 5 минут
Создал
https://gitter.im/springjazzy/... share-link
1
0 / 0 / 0
Регистрация: 19.07.2015
Сообщений: 1
22.03.2016, 07:12
Можете поделиться информацией, как вы создавали экспорт ключа в формат pfx?
Есть ли решения обойтись без МагТуннеля?
0
6 / 6 / 0
Регистрация: 24.12.2015
Сообщений: 41
22.03.2016, 08:49
shsa, Методические рекомендации, раздел 3, страница 8: Экспортировать сертификат, полученный для установления защищенного соединения с ГИС ЖКХ, в формат pfx. Для этого можно использовать утилиты наподобие P12FromGostCSP.
Для экспорта в pfx не нужен МагТуннель, он нужен для установки соединения(как один из вариантов), но лучше своё разработать.
0
1 / 1 / 0
Регистрация: 11.11.2009
Сообщений: 15
22.03.2016, 15:01
у кого-нибудь есть работающий пример, который работает с текущим тестовым СИТ (8.6.0.6)?

Был на собрании в Ланит в прошлую среду, они обещали что в течении 2-3 недель появится две вещи
- пример и библиотека на c#
- отдельный багтрекер типа jira для программистов

библиотека и пример будут с использованием криптотонеля магпро насколько я понял, свою реализацию соединения и подписи они делать не планируют.
0
0 / 0 / 0
Регистрация: 21.01.2016
Сообщений: 20
22.03.2016, 15:28
regent, да у нас в треде и свой пример на шарпе есть уже, и библиотека для подписи ))
0
1 / 1 / 0
Регистрация: 11.11.2009
Сообщений: 15
22.03.2016, 15:54
versh23, ты пример от Araney имеешь в виду?

У меня такая проблема

подставил thingerprint своего сертификата в настройки и при попытке получить поставщика данных или список справочников получаю ошибку

"Не удалось загрузить файл или сборку "GISGKHTest.XmlSerializers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" либо одну из их зависимостей. Не удается найти указанный файл."

Возможно я криворукий и что-то делаю не так Подскажите пожалуйста если не очень трудно что именно не так
0
13 / 13 / 0
Регистрация: 25.01.2016
Сообщений: 38
22.03.2016, 15:58
На компе должен стоять CryptoPro CSP, CryptoPro SDK и CryptoPro.NET
0
0 / 0 / 0
Регистрация: 21.01.2016
Сообщений: 20
22.03.2016, 16:06
regent, попробуйте удалить папки сборки, bin, obj и пересобрать
И еще, прокси класс нужно будет заново сгенерировать, для новой версии и endpoint проверить
0
1 / 1 / 0
Регистрация: 11.11.2009
Сообщений: 15
22.03.2016, 19:13
Цитата Сообщение от Araney Посмотреть сообщение
На компе должен стоять CryptoPro CSP, CryptoPro SDK и CryptoPro.NET
Установил

Цитата Сообщение от versh23 Посмотреть сообщение
regent, попробуйте удалить папки сборки, bin, obj и пересобрать
И еще, прокси класс нужно будет заново сгенерировать, для новой версии и endpoint проверить
сгенерённый таким образо прокси-класс отличается от того, что был в примере Araney
"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\svcutil" hcs-organizations-registry-service-8.6.0.6.wsdl hcs-nsi-service-8.6.0.6.wsdl *.xsd /async /n:*,dom.gosuslugi.schema.integration /edb /out:GKHService

и процедуры btnSend_Click и btnNsiList_Click становятся нерабочие. Пытался найти соответствия. нашёл не всё


Может кто-то пробовал недавно и есть рабочий пример получения хотябы чего-нибудь?

Добавлено через 19 минут
попытка получить Nsi
приводит к ошибке

Не удалось установить доверительные отношения для защищенного канала SSL/TLS с полномочиями "54.76.42.99:60045".
Удалённый сертификат недействителен согласно проверке подлинности
0
4 / 4 / 0
Регистрация: 17.02.2016
Сообщений: 13
23.03.2016, 01:59
Выкладываю ранее размещенный тут матерым человечищем пример. Я его слегка подправил. Сейчас бьюсь над загрузкой устава, договора управления, дома. Но тестовые функции у меня работают. Я только добавил класс для работы с прокси-сервером. Надо поменять данные в app config и заменить отпечатки сертификата и пароль к нему.
Может потребоваться переустановить CryptoPro.Net.
Вложения
Тип файла: zip GISGKH.zip (4.66 Мб, 130 просмотров)
3
4 / 4 / 0
Регистрация: 17.02.2016
Сообщений: 13
23.03.2016, 02:00
Это уже с учетом 8.6.0.6
0
13 / 13 / 0
Регистрация: 25.01.2016
Сообщений: 38
23.03.2016, 07:01
Цитата Сообщение от regent Посмотреть сообщение
Не удалось установить доверительные отношения для защищенного канала SSL/TLS с полномочиями "54.76.42.99:60045".
Удалённый сертификат недействителен согласно проверке подлинности
В app.config для этого есть:
XML
1
2
3
4
5
6
7
  <system.net>
    <settings>
      <servicePointManager
      checkCertificateName="false"
      checkCertificateRevocationList="false"/>
    </settings>
  </system.net>
Или в коде прописать
C#
1
System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate (object s, System.Security.Cryptography.X509Certificates.X509Certificate certificate, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors) { return true; };
Добавлено через 1 минуту
Цитата Сообщение от regent Посмотреть сообщение
и процедуры btnSend_Click и btnNsiList_Click становятся нерабочие. Пытался найти соответствия. нашёл не всё
Поменялись сервисы просто. Сервисы по организациям и нси разделили на 2.

Добавлено через 3 минуты
Цитата Сообщение от regent Посмотреть сообщение
Не удалось установить доверительные отношения для защищенного канала SSL/TLS с полномочиями "54.76.42.99:60045".
Удалённый сертификат недействителен согласно проверке подлинности
Просто на сервере у них невалидный сертификат, браузер ведь тоже на него ругается. На рабочем думаю такого не будет, поэтому вынес в конфиг, чтобы можно было убрать.
0
0 / 0 / 0
Регистрация: 23.03.2016
Сообщений: 1
23.03.2016, 10:16
Цитата Сообщение от springjazzy Посмотреть сообщение
Ланит выложил в открытый доступ версию подписи сообщения на Java - https://github.com/Good-Samaritan/signature-demo. Для работы требуется купить СКЗИ Trusted Java. Почему именно требуется - нет триального периода вообще.
Написал в техподдержку Trusted Java, попросил триальную лицензию для ознакомления с продуктом. В этот же день прислали триальный ключ на 1 месяц.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.03.2016, 10:16

.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. При срабатывании форматно-логического...


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

Или воспользуйтесь поиском по форуму:
180
Закрытая тема Создать тему
Новые блоги и статьи
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
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 будильника: начало и конец рабочего дня. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru