Статус: Новичок
Группы: Участники
Зарегистрирован: 22.04.2021(UTC) Сообщений: 1 Откуда: Краснодар
|
Пытаюсь с помощью Pycades подписывать SOAP запросы, чтобы отправлять их в ЕГИСЗ (тестовую версию). По их документации: Цитата:допускается использование сертификатов с алгоритмами подписей - RSA, ГОСТ Р 34.10-2001, ГОСТ Р 34.10-2012 с длиной ключа 256 бит или ГОСТ Р 34.10-2012 с длиной ключа 512 бит Цитата:SOAP-запросы, проходящие через ИПС, должны поддерживать стандарт WS-Security1. Для подписи запросов должен использоваться сертификат системы-инициатора запроса, указанный при регистрации системы. * Я сделал тестовую сертификат через КриптоПро, установил её в хранилище и проверил [img=https://ibb.co/31Ndpt2]скриншот сертификата[/img] * Отправил им сертификат * Подписываю XML запрос через `pycades` как указано в примере доков pycades, но вижу, что итоговый результат отличается от того, что требуется (например, нет BinarySecurityToken). Код:<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><s:Header><a:Action>sendDocument</a:Action><transportHeader xmlns="http://egisz.rosminzdrav.ru" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><authInfo><clientEntityId>e3817565-5fe2-702d-d437...</clientEntityId></authInfo></transportHeader><a:MessageID/><a:ReplyTo><a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address></a:ReplyTo><a:To/></s:Header><s:Body xmlns:d2p1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" d2p1:Id="BodyID-de50a37c-7d9b-4132-9453-ef063ddd4b39"/><sendDocument xmlns="http://receiver.service.nr.eu.rt.ru/"><oid xmlns=""/><service xmlns=""/><document xmlns=""/></sendDocument><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Signature1-29cd0f288-431b-f561-ab7d-24e2c48c014">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"/>
<ds:Reference URI="">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"/>
<ds:DigestValue>KtJVtIiy4WM2IyHexS06HCIkTid4OViFaNUmI0oaCvA=</ds:DigestValue>
</ds:Reference>
<ds:Reference Type="http://uri.etsi.org/01903#SignedProperties" URI="#SignedPropertiesReferenceId1-29cd0f288-431b-f561-ab7d-24e2c48c014">
<ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"/>
<ds:DigestValue>yo9b5U5th6oyZACefGXb7KKxU5aIIzbyDS92oMrJcHM=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>zJ230slHHhTQLAsCp0twiGZ9h4TzqOkA3rqPPXDCzQBUVNRJUUOPvTeAN99RCbJy
lUAE0dJ1iKvdK7XRrotRRw==</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>MIIDATCCArCgAwIBAgITEgBSvyCprndfsUNAOQABAFK/IDAIBgYqhQMCAgMwfzEj
MCEGCSqGSIb3DQEJARYUc3VwcG9ydEBjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJV
MQ8wDQYDVQQHEwZNb3Njb3cxFzAVBgNVBAoTDkNSWVBUTy1QUk8gTExDMSEwHwYD
VQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDIwHhcNMjEwNDIxMDgyMjQzWhcN
MjEwNzIxMDgzMjQzWjAbMRkwFwYDVQQDDBBUZXN0IENlcnRpZmljYXRlMGYwHwYI
KoUDBwEBAQEwEwYHKoUDAgIkAAYIKoUDBwEBAgIDQwAEQIec2BD6HVustKxbib4A
nH4df4XUKi46/SUuWj0iUjHF4gFDPGegVj1pyxB3jyWk0ozzlcqZGiMeZunE9oxK
vgCjggFiMIIBXjAPBgNVHQ8BAf8EBQMDB/AAMB0GA1UdDgQWBBTV1nnlNvhmtBF0
FYqqaHCT4smoZDAfBgNVHSMEGDAWgBROgz4Uae/sXXqVK18R/jcyFklVKzBcBgNV
HR8EVTBTMFGgT6BNhktodHRwOi8vdGVzdGNhLmNyeXB0b3Byby5ydS9DZXJ0RW5y
b2xsL0NSWVBUTy1QUk8lMjBUZXN0JTIwQ2VudGVyJTIwMigxKS5jcmwwgawGCCsG
AQUFBwEBBIGfMIGcMGQGCCsGAQUFBzAChlhodHRwOi8vdGVzdGNhLmNyeXB0b3By
by5ydS9DZXJ0RW5yb2xsL3Rlc3QtY2EtMjAxNF9DUllQVE8tUFJPJTIwVGVzdCUy
MENlbnRlciUyMDIoMSkuY3J0MDQGCCsGAQUFBzABhihodHRwOi8vdGVzdGNhLmNy
eXB0b3Byby5ydS9vY3NwL29jc3Auc3JmMAgGBiqFAwICAwNBAEYxRFo58uJILnoe
9eoDrrtG63YKgKmPjtfcJrOtuM8EY36ReorlEiZKnKpdEjP4RYH9fhfHZ8gOn1Rb
oQI3nmI=</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
<ds:Object>
<QualifyingProperties xmlns="http://uri.etsi.org/01903/v1.3.2#" Target="#Signature1-29cd0f288-431b-f561-ab7d-24e2c48c014">
<SignedProperties Id="SignedPropertiesReferenceId1-29cd0f288-431b-f561-ab7d-24e2c48c014">
<SignedSignatureProperties>
<SigningTime>2021-04-22T08:26:56.777Z</SigningTime>
<SigningCertificateV2>
<Cert>
<CertDigest>
<ds:DigestMethod xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"/>
<ds:DigestValue xmlns:ds="http://www.w3.org/2000/09/xmldsig#">EswYY4/iTxJl1qQyuyCLElEpxES9EvNwK7QbPbQmG+g=</ds:DigestValue>
</CertDigest>
<IssuerSerialV2>MIGcMIGEpIGBMH8xIzAhBgkqhkiG9w0BCQEWFHN1cHBvcnRAY3J5cHRvcHJvLnJ1MQswCQYDVQQGEwJSVTEPMA0GA1UEBxMGTW9zY293MRcwFQYDVQQKEw5DUllQVE8tUFJPIExMQzEhMB8GA1UEAxMYQ1JZUFRPLVBSTyBUZXN0IENlbnRlciAyAhMSAFK/IKmud1+xQ0A5AAEAUr8g</IssuerSerialV2>
</Cert>
</SigningCertificateV2>
</SignedSignatureProperties>
</SignedProperties>
</QualifyingProperties>
</ds:Object>
</ds:Signature></s:Envelope>
* В ответ от тестового сервиса ЕГИС приходит: Код:<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
<wsse:Security
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="X509-e18bbd95-c949-401f-abca-2c463ee9c878">MIIB4zCCAY4CFHQS0RhMqu/a8sxl4uAsCSQrEI1IMAwGCCqFAwcBAQMCBQAwbzELMAkGA1UEBhMCUlUxDzANBgNVBAgMBk1vc2NvdzEPMA0GA1UEBwwGTW9zY293MQ4wDAYDVQQKDAVFR0lTWjEMMAoGA1UECwwDSVBTMSAwHgYDVQQDDBdpcHMtdGVzdC5yb3NtaW56ZHJhdi5ydTAeFw0xODExMTkwNTQ2MjNaFw0yMzExMTkwNTQ2MjNaMG8xCzAJBgNVBAYTAlJVMQ8wDQYDVQQIDAZNb3Njb3cxDzANBgNVBAcMBk1vc2NvdzEOMAwGA1UECgwFRUdJU1oxDDAKBgNVBAsMA0lQUzEgMB4GA1UEAwwXaXBzLXRlc3Qucm9zbWluemRyYXYucnUwZjAfBggqhQMHAQEBATATBgcqhQMCAiMBBggqhQMHAQECAgNDAARAZmU9pXI9pfyz3RjaXJMznDn4teUwVz735WmooeXcKHl2EY3qOkyWquyXnvKr4T1RkXM7EiTCDVwASbbjKUoGvjAMBggqhQMHAQEDAgUAA0EA5tDM4QG1iJQdjOd1xWVQgCBc7OOh4oRD4wN6ZLYOr3WSRTNptjAUDttm1IzdWd3+ybtGiWrg9k17YEIso0soNw==</wsse:BinarySecurityToken>
<ds:Signature
xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="SIG-d57b5b04-4625-45ed-b0d8-4c5811fa987c">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"/>
<ds:Reference URI="#id-0d1451d9-5bee-4737-9c7f-fca0f5588389">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"/>
<ds:DigestValue>6o+jDPzLOgYz+RG1dU2Dkkec3otLFCYeTIniCVljyHM=</ds:DigestValue>
</ds:Reference>
<ds:Reference URI="#TS-02255817-86e0-4ca3-ac53-783d96c4bc87">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"/>
<ds:DigestValue>IzfOBfwjebOuIS93YRp7QEDFlpJQ0m2FX6eXj/vBKNA=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>XG6wCTga8Q4hmeBUVEeve/WtvMH3jIzPn6vPOOCFY2tg3P+3MgXOCGWTi+ckMd/cBJxaRwGtwSIhWZBJQ/daxA==</ds:SignatureValue>
<ds:KeyInfo Id="KI-2a95afa8-36cb-41a5-b74a-5f80e38f2bfa">
<wsse:SecurityTokenReference wsu:Id="STR-41305df7-400e-4d4b-8e2a-6cc1865e2ae2">
<wsse:Reference URI="#X509-e18bbd95-c949-401f-abca-2c463ee9c878" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/>
</wsse:SecurityTokenReference>
</ds:KeyInfo>
</ds:Signature>
<wsu:Timestamp wsu:Id="TS-02255817-86e0-4ca3-ac53-783d96c4bc87">
<wsu:Created>2021-04-22T08:27:33.274Z</wsu:Created>
<wsu:Expires>2021-04-22T08:37:33.274Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
</SOAP-ENV:Header>
<SOAP-ENV:Body
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-0d1451d9-5bee-4737-9c7f-fca0f5588389">
<SOAP-ENV:Fault>
<faultcode
xmlns:ns0="https://ips-test.rosminzdrav.ru">ns0:Client.GW-011
</faultcode>
<faultstring>Не найден сертификат, соответствующий системе</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Мой код: Код:
import sys
sys.path.append(r'pycades_0.1.22769/build/')
import pycades
store = pycades.Store()
store.Open(pycades.CADESCOM_CONTAINER_STORE, pycades.CAPICOM_MY_STORE, pycades.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED)
certs = store.Certificates
assert(certs.Count != 0), "Сертификат не установлен в хранилище или не установлен родительский сертификат"
signer = pycades.Signer()
signer.Certificate = certs.Item(1)
signer.CheckCertificate = True
content_to_sign = 'xml из примера'
signedXML = pycades.SignedXML()
signedXML.Content = content_to_sign
signedXML.SignatureType = pycades.CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED | pycades.CADESCOM_XADES_BES
signature = signedXML.Sign(signer)
signedXML.Content = ""
signedXML.Verify(signature)
assert(signature == signedXML.Content), "Incorrect value of SignedXML.Verify result"
signature = signedXML.Sign(signer)
Формат запроса из документации: Код:
<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<s:Header>
<a:Action>sendDocument</a:Action>
<transportHeader xmlns="http://egisz.rosminzdrav.ru" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<authInfo>
<clientEntityId>Идентификатор ИС, полученный при регистрации</clientEntityId>
</authInfo>
</transportHeader>
<a:MessageID>Идентификатор сообщения</a:MessageID>
<a:ReplyTo>
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
</a:ReplyTo>
<a:To>Адрес сервиса Системы в ИПС</a:To>
<wsse:Security>
Блок подписи
</wsse:Security>
</s:Header>
<s:Body xmlns:d2p1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" d2p1:Id="BodyID-de50a37c-7d9b-4132-9453-ef063ddd4b39">
<sendDocument xmlns="http://receiver.service.nr.eu.rt.ru/">
<oid xmlns="">OID медицинской организации, ключ указанный при регистрации</oid>
<service xmlns="">Наименование метода</service>
<document xmlns="">Полезная нагрузка сообщения (сообщение в формате Base64)</document>
</sendDocument>
</s:Body>
</s:Envelope>
Подскажите, пожалуйста, возможно ли реализовать подписание XML в нужном формате(Ws-Security) через библиотеку pycades? Если да, то подскажите что для этого нужно исправить?
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close