24.12.2021, 12:15 | #1 |
Участник
|
КриптоПро. Отправка данных в ГИИС ДМДК. Электронная подпись XML
Привет всем.
Коллеги, а кто-нибудь делал в аксапте отправку данных в ГИИС ДМДК через криптопро? Мы тут занялись вопросом. Выявилась странная проблема с префиксами в XML. Не получается пока решить. Для XML-документа формируем подпись (XMLDSig) классом XmlSignatureManager. Все устраивает кроме одного - XML-узлы подписи не имеют явного префикса "ds:". Т.е. получается примерно так (пример чужой !) : Код: <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> <SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256" /> <Reference URI=""> <DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256" /> <DigestValue>QRYybUcBjRVBX8w3BRwnEVUJdW8tTjnehY9vmT+Tg6g=</DigestValue> </Reference> </SignedInfo> <SignatureValue>FIU25fwFADwAw1kEDuqQXzeSWk/0ABqN7bWk4kQWp5Z8CH/BvZUZhJ7dEVXogjY15cQf22+XXKooWAcKXgFisA==</SignatureValue> <KeyInfo> <X509Data> <X509Certificate>MIIBljCCAUOgAwIBAgIFALIb0lwwCgYIKoUDBwEBAwIwMTELMAkGA1UEBhMCUlUxEjAQBgNVBAoMCUNyeXB0b1BybzEOMAwGA1UEAwwFQWxpYXMwHhcNMTgxMTE5MTEwMDMyWhcNMTkxMTE5MTEwMDMyWjAxMQswCQYDVQQGEwJSVTESMBAGA1UECgwJQ3J5cHRvUHJvMQ4wDAYDVQQDDAVBbGlhczBmMB8GCCqFAwcBAQEBMBMGByqFAwICJAAGCCqFAwcBAQICA0MABEA2pfIf43pd1HJ5smWmRiL1ygJIkoEk3705P9KegQWMBjmrgVBiLsihYK9mCGvcSUsSEhiGP+FqXL0IxBcry4tHozswOTAOBgNVHQ8BAf8EBAMCA+gwEwYDVR0lBAwwCgYIKwYBBQUHAwIwEgYDVR0TAQH/BAgwBgEB/wIBBTAKBggqhQMHAQEDAgNBAPnIaU3AZpeDoq36pqQhWwHe1RKb7daWndt7j0zrB36oaH55auxMfrWZPzY8lFeUBPylh5vS/iMKMwo76lyJPm8=</X509Certificate> </X509Data> </KeyInfo> </Signature> Код: <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></ds:CanonicalizationMethod> <ds:SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"></ds:SignatureMethod> <ds:Reference> <ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"></ds:DigestMethod> <ds:DigestValue>aKEnYi7xyFtVN9awhy/jdmIkKa3l6TXLMPUL/On4gwU=</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue>IsjAgckh/80IR8armGi3+b25gLGht0dFxZ1jDxkJlOzD/VYqD76KYMFAEltBTBRdxe4XNxm8g23rO5iQiJ2YiA==</ds:SignatureValue> <ds:KeyInfo> <ds:X509Data> <ds:X509Certificate>MIIBljCCAUOgAwIBAgIFALIb0lwwCgYIKoUDBwEBAwIwMTELMAkGA1UEBhMCUlUxEjAQBgNVBAoMCUNyeXB0b1BybzEOMAwGA1UEAwwFQWxpYXMwHhcNMTgxMTE5MTEwMDMyWhcNMTkxMTE5MTEwMDMyWjAxMQswCQYDVQQGEwJSVTESMBAGA1UECgwJQ3J5cHRvUHJvMQ4wDAYDVQQDDAVBbGlhczBmMB8GCCqFAwcBAQEBMBMGByqFAwICJAAGCCqFAwcBAQICA0MABEA2pfIf43pd1HJ5smWmRiL1ygJIkoEk3705P9KegQWMBjmrgVBiLsihYK9mCGvcSUsSEhiGP+FqXL0IxBcry4tHozswOTAOBgNVHQ8BAf8EBAMCA+gwEwYDVR0lBAwwCgYIKwYBBQUHAwIwEgYDVR0TAQH/BAgwBgEB/wIBBTAKBggqhQMHAQEDAgNBAPnIaU3AZpeDoq36pqQhWwHe1RKb7daWndt7j0zrB36oaH55auxMfrWZPzY8lFeUBPylh5vS/iMKMwo76lyJPm8=</ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </ds:Signature> Гугление выдало https://www.cryptopro.ru/forum2/defa...=posts&t=15149 https://stackoverflow.com/questions/...ture-ds-prefix https://overcoder.net/q/454914/%D0%B...D0%B5%D0%BD-ds из первой ссылки как бы следует что это особенность реализации XMLDSig на уровне NET-классов подписи - тупо создает узлы без префиксов, более того, даже если Вы заранее подготовите XML с узлом SignedInfo, укажете в нём префиксы, то при выполнении Microsoft.Dynamics.XmlSign.Xades.ExtendedSignedXml.ComputeSignature() они будут удалены. Т.е. как бы и поделать тут ничего нельзя, кроме как самому написать формирование подписи. Может быть есть какой-то обходной путь или кто-то уже решал такую проблему ? P.S. Ax2012 R3 |
|
Теги |
xml, гиис дмдк, криптопро, элн |
|
|