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

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

16.12.2015, 11:46. Показов 175275. Ответов 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
 Аватар для hhmm
67 / 58 / 1
Регистрация: 01.04.2016
Сообщений: 346
26.05.2016, 10:34
Студворк — интернет-сервис помощи студентам
Читая интернет приходит ощущение, что Ланит - специализированная контора по отсосу денег из бюджета.
На том же сайте, ссылку на который я вчера давал, есть другая статья:

Секретарь комиссии Госдумы по стратегическим IT убеждён, что IBM убежала от «Ланита» из-за уязвимостей в трёхмиллиардной zakupki.gov.ru

Цитата Сообщение от Anvano Посмотреть сообщение
Еще что поразило - походу механизм загрузки из файлов и веб сервисы делают совершенно разные команды, не связанные друг с другом
Они просто сами не знают, что делать - скорей всего у них нет постановщика задачи.
Почта России не может быть постановщиком задачи - она в этом ничего не понимает.

Цитата Сообщение от Anvano Посмотреть сообщение
Ибо неоднократно натыкались уже, что поля необязательные в SOAP являются обязательными в эксель файлах и наоборот...
Более выразительный пример:
1. вы на СИТ2 в веб-интерфейсе руками создаете платежный документ и добавляете в него одну услугу - отопление, которое измеряется в гигакалориях
2. Гигакалория - это очень большая величина и в некоторых субъектах РФ на местном уровне законодательно утверждены нормативы потребления с точностью до 8 знаков после запятой
3. При попытке ввести такое число (например, 0.7654321 Гкал) веб-интерфейс не даст вам завести число с более чем 4 знаков после запятой и мы сразу в ихнем (Ланита) калькуляторе получаем ошибку в начислениях примерно в 20 рублей (0.7654321 * ставку)
4. При попытке выгрузить этот же документ через web-сервис это чудо падает с внутренней ошибкой на тему валидатора ('в поле не может быть больше двух знаков после запятой')
0
187 / 100 / 19
Регистрация: 15.09.2011
Сообщений: 801
26.05.2016, 10:45
Цитата Сообщение от Anvano Посмотреть сообщение
Та же самая байда, половина запросов отвечает <ns4:ErrorMessage>Превышено максимальное время обработки запроса</ns4:ErrorMessage>
Делайте асинхронные запросы. В синхронном у меня на пять запросов один прошёл, в Async- за второй getState - запрос проходит более менее.
0
 Аватар для hhmm
67 / 58 / 1
Регистрация: 01.04.2016
Сообщений: 346
26.05.2016, 10:49
Цитата Сообщение от Dr_Elvis Посмотреть сообщение
что саппорт ответил и всё заработало
Сегодня саппорт прислал очередной ответ, что они все исправили по одной из заявок (при регистрации организации Ланит неправильно указал форму собственности предприятия по ОКОПФ, вместо ТСЖ - ООО).

И они действительно исправили.

Заявка была подана 29 апреля 2016 года, сегодня - 26 мая 2016 года.

Так что за месяц одно исправление было сделано.

Спасибо Ланиту.
0
187 / 100 / 19
Регистрация: 15.09.2011
Сообщений: 801
26.05.2016, 10:52
Цитата Сообщение от SG13 Посмотреть сообщение
Подскажите пожалуйста. Получил сертификат, установил в систему, хочу подписать запрос с как это сделано в нескольких примерах выложенных в этой же теме,но privateKey у него равен null. В чем может быть проблема?
.NET sdk, КриптоПро CSP и КриптоПро.NET установили на машину? Более похоже, что система не видит провайдер или сертификат не находит - нужно в отладке смотреть. Была вроде такая проблема в самом начале - там нужно было пароль закрытого ключа указать и правильно отпечаток.

Добавлено через 1 минуту
Цитата Сообщение от hhmm Посмотреть сообщение
Спасибо Ланиту.
Мне СНИЛС полторы недели добавляли в личный кабинет СИТ2 с последующими двумя ошибками - на всё ушло около двух недель - тоже Спасибо Ланиту.
0
 Аватар для hhmm
67 / 58 / 1
Регистрация: 01.04.2016
Сообщений: 346
26.05.2016, 10:53
Цитата Сообщение от umatkot Посмотреть сообщение
Делайте асинхронные запросы. В синхронном у меня на пять запросов один прошёл, в Async- за второй getState - запрос проходит более менее.
Или в биндингах прибавьте время ожидания, я сразу 10 минут накинул:


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/// <summary>
/// Увеличить временной интервал
/// </summary>
/// <param name="InputTimeSpan">Исходный временной интервал</param>
/// <returns></returns>
private static TimeSpan IncreaseTimeSpan(TimeSpan InputTimeSpan)
    {
    // На 10 минут
    TimeSpan Addon = new TimeSpan(0, 10, 0);
 
    TimeSpan Result = InputTimeSpan.Add(Addon);
    return Result;
    }
    
 
// увеличиваем таймауты
basicBinding.OpenTimeout = IncreaseTimeSpan(basicBinding.OpenTimeout);
basicBinding.SendTimeout = IncreaseTimeSpan(basicBinding.SendTimeout);
basicBinding.ReceiveTimeout = IncreaseTimeSpan(basicBinding.ReceiveTimeout);
0
187 / 100 / 19
Регистрация: 15.09.2011
Сообщений: 801
26.05.2016, 11:00
Цитата Сообщение от mecanizm Посмотреть сообщение
Коллеги кто сталкивается с такой проблемой? <ns4:ErrorCode>EXP002002</ns4:ErrorCode>
<ns4:ErrorMessage>Превышено максимальное время обработки запроса</ns4:ErrorMessage>
как можно попобороть, без того медленно запросы идут еще и по таймауту отваливаются... не возможно отлаживать обмен!
Используй асинхронные вызовы.
0
 Аватар для hhmm
67 / 58 / 1
Регистрация: 01.04.2016
Сообщений: 346
26.05.2016, 11:03
На форуме банкиров оказывается тоже есть обсуждение, кому интересно могут почитать:

Система ГИС ЖКХ - ФГУП Почта России
0
6 / 5 / 0
Регистрация: 28.03.2016
Сообщений: 34
26.05.2016, 12:26
Как они работают? где и как ждать ответ? в чем принципиальное отличи асинхронных сервисов....
0
0 / 0 / 0
Регистрация: 19.05.2016
Сообщений: 26
26.05.2016, 12:44
Кто знает, могут французские кавычки («») в X509IssuerName быть причиной ошибки "ЭП не прошла проверку: Cannot find any certificates referenced by xades:SigningCertificate"? Когда подписываю другим сертификатом, такой ошибки нет. X509IssuerName получаю через BouncyCastle.
0
6 / 6 / 0
Регистрация: 24.12.2015
Сообщений: 41
26.05.2016, 12:59
все кавычки, запятые и т.п. необходимо экранировать
0
0 / 0 / 0
Регистрация: 19.05.2016
Сообщений: 26
26.05.2016, 13:16
Dr_Elvis, спасибо.
0
 Аватар для hhmm
67 / 58 / 1
Регистрация: 01.04.2016
Сообщений: 346
26.05.2016, 13:34
Dr_Elvis, у меня и Anvano к вам вопрос как к сотруднику компании Ланит:

как нам ежемесячно заливать к вам в базу по 10 миллионов записей?

У меня сейчас в базе таблицы занимают:
связок лицевой-услуга в нативном виде - 1 Гб
показаний счетчиков - 0.5 Гб
платежей - 2 Гб

это все нужно запихивать каждый месяц.
У расчетно-кассовых центров достаточно жесткий регламент работы, больше суток в месяц вряд ли кто-либо сможет выделить на общение с вашей конструкцией.


Может быть компании где вы работаете стоит прекратить выделываться с многочисленными цифровыми подписями и шифрованиями
и обеспечить загрузку zip архива с данными в формате CSV через ftp на ваш сервер?

А дальше уже рисуйте на своем сайте на основании присланных данных любые цифры какие хотите.
1
 Аватар для NaGuWaL
17 / 14 / 0
Регистрация: 22.04.2016
Сообщений: 287
26.05.2016, 15:54
Коллеги столкнулся с такой вот проблемой:
при вызове метода(XadesSignedXml.cs) Reference_UpdateHashValue.Invoke(referen ce2, new object[] { m_containingDocument, refList });
вылетает ошибка - Адресат вызова создал исключение.
В приложение добавлена библиотека System.Security v 4.0 а в Assembly.Load v2 Может ли быть проблема в этом?

Добавлено через 41 минуту
Выяснил Что обычный WCF client при создании MyBehavior формирует следующий 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
<?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:exportOrgRegistry
        </Action>
        <h:ISRequestHeader
            xmlns="http://dom.gosuslugi.ru/schema/integration/8.7.0.7/"
            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/8.7.0.7/">
            <Date>2016-05-26T14:15:32.4600887+03:00</Date>
            <MessageGUID>2cd16a09-dddb-4b65-83bd-a103b7b195c7</MessageGUID>
        </h:ISRequestHeader>
    </s:Header>
    <s:Body
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <exportOrgRegistryRequest
            xmlns="http://dom.gosuslugi.ru/schema/integration/8.7.0.7/organizations-registry-common/">
            <SearchCriteria>
                <OGRN
                    xmlns="http://dom.gosuslugi.ru/schema/integration/8.7.0.7/">1062309019794
                </OGRN>
            </SearchCriteria>
        </exportOrgRegistryRequest>
    </s:Body>
</s:Envelope>
Но как это завязать с Xadles?

Добавлено через 1 час 31 минуту
Корректировка по ветру... Это версия soap сообщений... Теперь не могу разобраться как использовать Soap11
0
0 / 0 / 0
Регистрация: 19.05.2016
Сообщений: 26
26.05.2016, 15:58
Dr_Elvis, экранирование не помогло, если в нем было дело. Все равно ошибка "ru.lanit.hcs.integration.common.excepti on.OperationProcessorException: ЭП не прошла проверку: Cannot find any certificates referenced by xades:SigningCertificate".

Запрос к СИТ-02 по http:

Кликните здесь для просмотра всего текста
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
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header>
        <h:RequestHeader xmlns:h="http://dom.gosuslugi.ru/schema/integration/8.7.0.7/">
            <h:Date>2016-05-26T15:29:02+03:00</h:Date>
            <h:MessageGUID>3d8679c9-517c-4875-9480-815b7e78e2e9</h:MessageGUID>
            <h:SenderID>fb7aa948-34f7-4ca8-9367-52bef5490f54</h:SenderID>
        </h:RequestHeader>
    </soap:Header>
    <soap:Body><exportOrgRegistryRequest xmlns="http://dom.gosuslugi.ru/schema/integration/8.7.0.7/organizations-registry-common/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Id="6990aca0-b2b3-412c-9fc7-6dfa51f817a4">
    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="xmldsig-2a2109f0-9ffd-45b5-af27-5d855b1443af">
        <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 Id="xmldsig-2a2109f0-9ffd-45b5-af27-5d855b1443af-ref0" URI="#6990aca0-b2b3-412c-9fc7-6dfa51f817a4">
                <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>JiXJ3n7AMVgPiqA6eR6XOWk7ij5vk2R+pM4D3gZdBmc=</DigestValue>
            </Reference>
            <Reference URI="#xmldsig-2a2109f0-9ffd-45b5-af27-5d855b1443af-signedprops" Type="http://uri.etsi.org/01903#SignedProperties">
                <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
                <DigestValue>O0iVFa0cDTgdJoll38zP1AQVY7SbK0H5jFGqy/0IliY=</DigestValue>
            </Reference>
        </SignedInfo>
        <SignatureValue Id="xmldsig-2a2109f0-9ffd-45b5-af27-5d855b1443af-sigvalue">i45HEIv4oHrMiztH/orh7rReeRK8Ats1DbZ3CdSFlNzKJEqFsGgCa1poJEU/C7eE
fE7KBVyLNLe50EhatgVPpw==</SignatureValue>
        <KeyInfo>
<X509Data>
<X509Certificate>MIIKIzCCCdKgAwIBAgIKTWEndQACAACXNzAIBgYqhQMCAgMwggGMMRgwFgYFKoUD
ZAESDTEwMjY2MDU2MDY2MjAxGjAYBggqhQMDgQMBARIMMDA2NjYzMDAzMTI3MSww
KgYDVQQJDCPQn9GALiDQmtC+0YHQvNC+0L3QsNCy0YLQvtCyINC0LiA1NjEeMBwG
CSqGSIb3DQEJARYPY2FAc2tia29udHVyLnJ1MQswCQYDVQQGEwJSVTEzMDEGA1UE
CAwqNjYg0KHQstC10YDQtNC70L7QstGB0LrQsNGPINC+0LHQu9Cw0YHRgtGMMSEw
HwYDVQQHDBjQldC60LDRgtC10YDQuNC90LHRg9GA0LMxLjAsBgNVBAoMJdCX0JDQ
niDCq9Cf0KQgwqvQodCa0JEg0JrQvtC90YLRg9GAwrsxMDAuBgNVBAsMJ9Cj0LTQ
vtGB0YLQvtCy0LXRgNGP0Y7RidC40Lkg0YbQtdC90YLRgDE/MD0GA1UEAww20KPQ
piDQl9CQ0J4gwqvQn9CkIMKr0KHQmtCRINCa0L7QvdGC0YPRgMK7IChRdWFsaWZp
ZWQpMB4XDTE1MDkyODA4NDkwMFoXDTE2MDkyODA4NTAwMFowggGIMRowGAYIKoUD
A4EDAQESDDAwNjAyNzEzNzA5OTEgMB4GCSqGSIb3DQEJARYRYm9tYmJlckBnbWFp
bC5jb20xCzAJBgNVBAYTAlJVMS0wKwYDVQQIDCQ2MCDQn9GB0LrQvtCy0YHQutCw
0Y8g0L7QsdC70LDRgdGC0YwxEzARBgNVBAcMCtCf0YHQutC+0LIxGjAYBgNVBAoM
EdCe0J7QniAi0JbQrdCjLTEiMRowGAYDVQQDDBHQntCe0J4gItCW0K3Qoy0xIjEZ
MBcGA1UEDAwQ0JTQuNGA0LXQutGC0L7RgDEXMBUGA1UEBAwO0JXRgNC+0YXQuNC9
0LAxKjAoBgNVBCoMIdCV0LvQtdC90LAg0JDQvdCw0YLQvtC70YzQtdCy0L3QsDEt
MCsGA1UECQwk0KPQm9CY0KbQkCDQndCV0JrQoNCQ0KHQntCS0JAsIDM4LzI1MRgw
FgYFKoUDZAESDTExMTYwMjcwMDk3MDIxFjAUBgUqhQNkAxILMDY1Njk3MjU4MTQw
YzAcBgYqhQMCAhMwEgYHKoUDAgIkAAYHKoUDAgIeAQNDAARAIFhPd4KDsFASJllO
HOVaZ/8G+wT4J2LQgeZjyEa0KeRUq7yUXZ4cwku7NahM561SdBC9HtvmaaW/4y6r
+peUUaOCBhIwggYOMA4GA1UdDwEB/wQEAwIE8DATBgNVHSAEDDAKMAgGBiqFA2Rx
ATBDBgNVHSUEPDA6BggrBgEFBQcDAgYIKwYBBQUHAwQGByqFAwICIgYGByqFAwMH
CAEGCCqFAwMFCgIMBggqhQMDBwABDDAcBgNVHREEFTATgRFib21iYmVyQGdtYWls
LmNvbTAdBgNVHQ4EFgQUx6AfSt6lvrYJTXYsJirD0hSyhhMwggHNBgNVHSMEggHE
MIIBwIAUrN+DLDx83ofRYb6hmvGMjKStNHChggGUpIIBkDCCAYwxGDAWBgUqhQNk
ARINMTAyNjYwNTYwNjYyMDEaMBgGCCqFAwOBAwEBEgwwMDY2NjMwMDMxMjcxLDAq
BgNVBAkMI9Cf0YAuINCa0L7RgdC80L7QvdCw0LLRgtC+0LIg0LQuIDU2MR4wHAYJ
KoZIhvcNAQkBFg9jYUBza2Jrb250dXIucnUxCzAJBgNVBAYTAlJVMTMwMQYDVQQI
DCo2NiDQodCy0LXRgNC00LvQvtCy0YHQutCw0Y8g0L7QsdC70LDRgdGC0YwxITAf
BgNVBAcMGNCV0LrQsNGC0LXRgNC40L3QsdGD0YDQszEuMCwGA1UECgwl0JfQkNCe
IMKr0J/QpCDCq9Ch0JrQkSDQmtC+0L3RgtGD0YDCuzEwMC4GA1UECwwn0KPQtNC+
0YHRgtC+0LLQtdGA0Y/RjtGJ0LjQuSDRhtC10L3RgtGAMT8wPQYDVQQDDDbQo9Cm
INCX0JDQniDCq9Cf0KQgwqvQodCa0JEg0JrQvtC90YLRg9GAwrsgKFF1YWxpZmll
ZCmCED5kHn10Mdi8T+2QWhv701IwgYQGA1UdHwR9MHswO6A5oDeGNWh0dHA6Ly9j
ZHAuc2tia29udHVyLnJ1L2NkcC9rb250dXItcXVhbGlmaWVkLTIwMTQuY3JsMDyg
OqA4hjZodHRwOi8vY2RwMi5za2Jrb250dXIucnUvY2RwL2tvbnR1ci1xdWFsaWZp
ZWQtMjAxNC5jcmwwgdwGCCsGAQUFBwEBBIHPMIHMMDEGCCsGAQUFBzABhiVodHRw
Oi8vcGtpLnNrYmtvbnR1ci5ydS9vY3NwL29jc3Auc3JmMEoGCCsGAQUFBzAChj5o
dHRwOi8vY2RwLnNrYmtvbnR1ci5ydS9jZXJ0aWZpY2F0ZXMva29udHVyLXF1YWxp
ZmllZC0yMDE0LmNydDBLBggrBgEFBQcwAoY/aHR0cDovL2NkcDIuc2tia29udHVy
LnJ1L2NlcnRpZmljYXRlcy9rb250dXItcXVhbGlmaWVkLTIwMTQuY3J0MIGTBgcq
hQMCAjECBIGHMIGEMHQWQmh0dHA6Ly9jYS5za2Jrb250dXIucnUvYWJvdXQvZG9j
dW1lbnRzL2NyeXB0b3Byby1saWNlbnNlLXF1YWxpZmllZAwq0KHQmtCRINCa0L7Q
vdGC0YPRgCDQuCDQodC10YDRgtGD0Lwt0J/RgNC+AwIF4AQMEbUjhdOfOwHhPnDY
MCsGA1UdEAQkMCKADzIwMTUwOTI4MDg0OTAwWoEPMjAxNjA5MjgwODQ5MDBaMDYG
BSqFA2RvBC0MKyLQmtGA0LjQv9GC0L7Qn9GA0L4gQ1NQIiAo0LLQtdGA0YHQuNGP
IDMuNikwggExBgUqhQNkcASCASYwggEiDCsi0JrRgNC40L/RgtC+0J/RgNC+IENT
UCIgKNCy0LXRgNGB0LjRjyAzLjYpDFMi0KPQtNC+0YHRgtC+0LLQtdGA0Y/RjtGJ
0LjQuSDRhtC10L3RgtGAICLQmtGA0LjQv9GC0L7Qn9GA0L4g0KPQpiIg0LLQtdGA
0YHQuNC4IDEuNQxOQ9C10YDRgtC40YTQuNC60LDRgiDRgdC+0L7RgtCy0LXRgtGB
0YLQstC40Y8g4oSWINCh0KQvMTI0LTIyMzgg0L7RgiAwNC4xMC4yMDEzDE5D0LXR
gNGC0LjRhNC40LrQsNGCINGB0L7QvtGC0LLQtdGC0YHRgtCy0LjRjyDihJYg0KHQ
pC8xMjgtMjM1MSDQvtGCIDE1LjA0LjIwMTQwCAYGKoUDAgIDA0EA9m/rB1H0Ci/H
58RQXHrT0EqHyyditYsK5rD/Uyfkk8g8mzvqHHAhqecYV1zolnw4gvMeQFUvqVxj
OkOqSoARlg==</X509Certificate>
</X509Data>
</KeyInfo>
    <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-2a2109f0-9ffd-45b5-af27-5d855b1443af">
        <xades:SignedProperties Id="xmldsig-2a2109f0-9ffd-45b5-af27-5d855b1443af-signedprops">
            <xades:SignedSignatureProperties>
                <xades:SigningTime>2016-05-26T15:29:01+03:00</xades:SigningTime>
                <xades:SigningCertificate>
                    <xades:Cert xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
                        <xades:CertDigest>
                            <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
                            <ds:DigestValue>yZtjEbVmo+exafp88CNlYIZIeCoGXxotY9UrxQeUxhA=</ds:DigestValue>
                        </xades:CertDigest>
                        <xades:IssuerSerial>
<ds:X509IssuerName>1.2.643.100.1=1026605606620,1.2.643.3.131.1.1=006663003127,STREET=Пр. Космонавтов д. 56,1.2.840.113549.1.9.1=ca@skbkontur.ru,C=RU,ST=66 Свердловская область,L=Екатеринбург,O=ЗАО \«ПФ \«СКБ Контур\»,OU=Удостоверяющий центр,CN=УЦ ЗАО \«ПФ \«СКБ Контур\» (Qualified)</ds:X509IssuerName>
                            <ds:X509SerialNumber>365414396534860852270903</ds:X509SerialNumber>
                        </xades:IssuerSerial>
                    </xades:Cert>
                </xades:SigningCertificate>
            </xades:SignedSignatureProperties>
        </xades:SignedProperties>
    </xades:QualifyingProperties>
</Object></Signature>
    <SearchCriteria>
        <OGRN xmlns="http://dom.gosuslugi.ru/schema/integration/8.7.0.7/">1234567890123</OGRN>
    </SearchCriteria>
    <lastEditingDateFrom>2016-05-26</lastEditingDateFrom>
</exportOrgRegistryRequest>
    </soap:Body>
</soap:Envelope>
0
187 / 100 / 19
Регистрация: 15.09.2011
Сообщений: 801
27.05.2016, 02:13
loot hoarder, в заголовке функции
<soap:Body><exportOrgRegistryRequest xmlns="http://dom.gosuslugi.ru/schema/integration/8.7.0.7/organizations-registry-common/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Id="6990aca0-b2b3-412c-9fc7-6dfa51f817a4">
вы неправильно ставите ID - там не должно быть "6990aca0-b2b3-412c-9fc7-6dfa51f817a4" - должно быть "signed-data-container". Почему вы выбрали путь идентификаторов, когда они там не требуются?

Добавлено через 2 минуты
NaGuWaL, какую версию студии используете? Могу прислать Вам нормальный, настроенный проект, который не глючит по непонятным причинам.

Добавлено через 8 минут
Цитата Сообщение от mecanizm Посмотреть сообщение
принципиальное отличи асинхронных сервисов
в том, что ты можешь послать запрос и не ждать результата его выполнения. Если запрос правильный, он завершится в фоновом режиме, на СИТ, даже если ты выключишь свой компьютер сразу после запроса.
0
187 / 100 / 19
Регистрация: 15.09.2011
Сообщений: 801
27.05.2016, 02:25
loot hoarder, если проблема с экранированием, то попробуйте получить подпись с помощью библиотеки от trusted java - уж она то должна справиться с такими мелочами. Серийник они высылают по почте для ознакомления - хорошие парни, вежливые там работают. Если присланная библиотека не будет работать - то компилируйте её сами - там нет ничего сложного. Вообще - методом научного тыка можно попробовать в окне SOAPUШ менять кавычки у уже подписанного документа.
Вложения
Тип файла: zip signature-demo-net-master.zip (3.17 Мб, 60 просмотров)
Тип файла: rar gisIntegration_Console_cf.rar (1.45 Мб, 47 просмотров)
0
187 / 100 / 19
Регистрация: 15.09.2011
Сообщений: 801
27.05.2016, 02:42
Цитата Сообщение от hhmm Посмотреть сообщение
Или в биндингах прибавьте время ожидания
у меня давно уже стоит - ещё с детства (как проект собирал и делал первые запросы) - сейчас это не помогает.Только async. Или запускать ночью - нагрузки на сервер меньше, так как регионы спят - а дальневосточный регион не сильно грузит серваки. Что вы так боитесь этих async? Там вся работа в одной процедуре делается и они практичнее. Синхронные использовать только для проверки удобно и больше они нафиг не нужны в такой интеграции. Спасибо Ланиту, что позаботились об асинхронности.
0
 Аватар для NaGuWaL
17 / 14 / 0
Регистрация: 22.04.2016
Сообщений: 287
27.05.2016, 08:56
umatkot, использую VS2015 .NET Framework 4.5. Я бы был признателен!!!

Добавлено через 41 минуту
umatkot, Я весьма признателен за выложенный пример, долго мучился, и всё таки я не понял как использовать Xades и как его настраивать, не могли бы подсказать где можно почитать про это всё... Заранее благодарю!
0
0 / 0 / 0
Регистрация: 19.05.2016
Сообщений: 26
27.05.2016, 11:32
umatkot, спасибо за ответы и библиотеки

В exportOrgRegistryRequest.Id я поставил уникальный идентификатор, т.к. не уверен, что он не используется на прикладном уровне. А подпись, по-моему, работает с любым идентификатором контейнера. Во всяком случае, крипто-софт на него не жалуется.

В Вашем примере используется КриптоПро.NET, а я пытаюсь обойтись "КриптоПро ЭЦП Browser plug-in", в нем есть COM-объекты, которые подписывают в формате XMLDSig, а дополнительные поля для XAdES я предварительно в документ добавляю вручную. И вроде, документ проходит валидацию в ГИС, вот только с сертификатами проблема. (Возможно, эти COM-объекты есть и в КриптоПро CSP, я до конца еще не разобрался.)

Ну а приобретать доп. лицензии на другие продукты только за тем, чтобы получить, к примеру, экранирование, мне кажется неразумным. Хотя, возможно, без этого будет не обойтись.

Добавлено через 27 минут
Согласно RFC1779 https://www.ietf.org/rfc/rfc1779.txt, по которому, вроде, нужно формировать X509IssuerName, французские кавычки не нужно экранировать.

Добавлено через 1 час 16 минут
Нашел здесь https://lists.w3.org/Archives/... n4.4.4.htm, что кавычки эти нужно заменять на \AB и \BB, да только тоже не помогло.
0
187 / 100 / 19
Регистрация: 15.09.2011
Сообщений: 801
30.05.2016, 05:23
loot hoarder, Я не знаю, братан, пока что есть только связка с КриптоПро и ещё один проект без него, но там столько работы, что лучше бы оставить эту неблагородную затею. Сколько раз пытались уйти от КриптоПро даже в силу элементарного SSL с ГОСТ, но тут нужны собственные наработки - а на них ни времени ни сил нет. Как только сделать интеграцию - можно уже потом будет думать, что использовать и как уйти от КриптоПро - пока это сделать сложно. Проблема в том, что КриптоПро предоставляет сам криптопровайдер ГОСТ - я очень давно делал рефакторинг и пытался сделать свой провайдер - но это очень для крутых людей задача, мне кажется. А библиотеку с Trusted Java - я использовал для теста - по сути это как раз оттуда идёт вся инфа об использовании правильного формата подписи...

Добавлено через 3 минуты
NaGuWaL, Сам проект я использую от SpringJazzy - он хорошо разобрался с этим Xades - можешь у него уточнить, он есть на этом форуме. А настраивать его особо не нужно:
1) Ставишь CSP, и ставишь .NET от КриптоПро.
2) Перед тем, как пытаешься поключиться по HTTPS биндингу - тебе надо в браузере закешировать сертификат - это делается посредством пыток WEBReference или у браузера IE - тебе нужно сделать привязку в системном браузере, а программа со студии потом будет её подхватывать. Сначала будет валиться ошибка, а потом, когда ты зайдёшь на WEB сервис из браузера, укажаешь там сертификат, поставишь пароль на свой закрытый ключ - связка должна закешироваться.

Добавлено через 16 минут
NaGuWaL,
https://www.w3.org/TR/XAdES/
Но я бы не стал заморачиваться, так как проект от SpringJazzy - должен учитывать все нюансы этого чуда.
Есть ещё signature-demo-net-master - но там головняк такой, что лучше тоже не суваться а пользоваться вариантом SpringJazzy.

loot hoarder,
Ты тестировал свой сертификат через Trusted Java? Какую подпись он формирует? Я где-то читал, что ГИС использует на сервере как раз Trusted Java.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.05.2016, 05:23

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


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

Или воспользуйтесь поиском по форуму:
540
Закрытая тема Создать тему
Новые блоги и статьи
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru