Ошибка проверки эцп нарушена целостность эцп


Offline

ty134

 


#1
Оставлено
:

27 февраля 2018 г. 8:48:50(UTC)

ty134

Статус: Участник

Группы: Участники

Зарегистрирован: 19.03.2015(UTC)
Сообщений: 26
Ангилла

Добрый день!

Подписываю:

Код:

<?xml version="1.0" encoding="UTF-8"?><SendRequestRequest xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.2" xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.2" xmlns:ns3="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/faults/1.2"><SenderProvidedRequestData Id="SIGNED_BY_CONSUMER"><MessageID>4cba8e51-1b78-11e8-b6d6-0018f3be243e</MessageID><ReferenceMessageID>4cba8e51-1b78-11e8-b6d6-0018f3be243e</ReferenceMessageID><ns2:MessagePrimaryContent><ns1:FNSVipULRequest xmlns:ns1="urn://x-artefacts-fns-vipul-tosmv-ru/311-14/4.0.5" ИдДок="22ED0D32-F3F2-0693-E050-A8C0D3C81091" НомерДела="БН"><ns1:ЗапросЮЛ><ns1:ИННЮЛ>7730592673</ns1:ИННЮЛ></ns1:ЗапросЮЛ></ns1:FNSVipULRequest></ns2:MessagePrimaryContent></SenderProvidedRequestData></SendRequestRequest>

передаю в СМЭВ 3:

Outbound message:

Код:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><S:Body><SendRequestRequest xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.2" xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.2" xmlns:ns3="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/faults/1.2"><SenderProvidedRequestData Id="SIGNED_BY_CONSUMER"><MessageID>4cba8e51-1b78-11e8-b6d6-0018f3be243e</MessageID><ReferenceMessageID>4cba8e51-1b78-11e8-b6d6-0018f3be243e</ReferenceMessageID><ns2:MessagePrimaryContent><ns1:FNSVipULRequest xmlns:ns1="urn://x-artefacts-fns-vipul-tosmv-ru/311-14/4.0.5" ИдДок="22ED0D32-F3F2-0693-E050-A8C0D3C81091" НомерДела="БН"><ns1:ЗапросЮЛ><ns1:ИННЮЛ>7730592673</ns1:ИННЮЛ></ns1:ЗапросЮЛ></ns1:FNSVipULRequest></ns2:MessagePrimaryContent></SenderProvidedRequestData><CallerInformationSystemSignature><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:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/>
<ds:Reference URI="#SIGNED_BY_CONSUMER">
<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:Transform Algorithm="urn://smev-gov-ru/xmldsig/transform"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
<ds:DigestValue>BMVQj9D19kLc/BcX41hPKs6IbcoZMIrYy20onE1Y9y8=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
irxPa2QIxGYJsJytXs+cPG/dVRjnajdmb3SNgMx3/sSNgELywkHuW2gaiRyjzyv5S7vBcOBe6Nzw
tqpOuIWZsw==
</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>
MIII2zCCCIqgAwIBAgIRAXnKy0gwAJ2y5xGPztT9DugwCAYGKoUDAgIDMIIBeTEfMB0GCSqGSIb3
DQEJARYQcnVjQHNhbXJlZ2lvbi5ydTEYMBYGBSqFA2QBEg0xMDk2MzE1MDAzMDgwMRowGAYIKoUD
A4EDAQESDDAwNjMxNTg1NjMyNTELMAkGA1UEBhMCUlUxLTArBgNVBAgMJDYzINCh0LDQvNCw0YDR
gdC60LDRjyDQvtCx0LvQsNGB0YLRjDEVMBMGA1UEBwwM0KHQsNC80LDRgNCwMTowOAYDVQQJDDHR
g9C7LiDQnNC+0LvQvtC00L7Qs9Cy0LDRgNC00LXQudGB0LrQsNGPLCDQtC4gMjEwMVMwUQYDVQQL
DErQo9C/0YDQsNCy0LvQtdC90LjQtSDQuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC5INCx0LXQ
t9C+0L/QsNGB0L3QvtGB0YLQuDEdMBsGA1UECgwU0JPQmtCjINCh0J4g0KDQptCj0J8xHTAbBgNV
BAMMFNCT0JrQoyDQodCeINCg0KbQo9CfMB4XDTE3MTEyMTA3MzUxNFoXDTE4MTEyMTA3NDUxNFow
ggF+MRkwFwYJKoZIhvcNAQkBFgp0Z2xAdGdsLnJ1MRowGAYIKoUDA4EDAQESDDAwNjMyMDAwMTc0
MTEYMBYGBSqFA2QBEg0xMDM2MzAxMDc4MDU0MVYwVAYDVQQKDE3QkNC00LzQuNC90LjRgdGC0YDQ
sNGG0LjRjyDQs9C+0YDQvtC00YHQutC+0LPQviDQvtC60YDRg9Cz0LAg0KLQvtC70YzRj9GC0YLQ
uDEkMCIGA1UECQwb0L/Quy4g0KHQstC+0LHQvtC00YssINC0LiA0MRkwFwYDVQQHDBDQotC+0LvR
jNGP0YLRgtC4MS0wKwYDVQQIDCQ2MyDQodCw0LzQsNGA0YHQutCw0Y8g0L7QsdC70LDRgdGC0Ywx
CzAJBgNVBAYTAlJVMVYwVAYDVQQDDE3QkNC00LzQuNC90LjRgdGC0YDQsNGG0LjRjyDQs9C+0YDQ
vtC00YHQutC+0LPQviDQvtC60YDRg9Cz0LAg0KLQvtC70YzRj9GC0YLQuDBjMBwGBiqFAwICEzAS
BgcqhQMCAiQABgcqhQMCAh4BA0MABECC3shVHlRZIH/IhVBcta5WXzV3gTl+MkFephKAx6ku91Ww
puFtFx+iSFzh69kCbYLZLM6auNWXItsxEd0Z2/E4o4IE4DCCBNwwDgYDVR0PAQH/BAQDAgP4MB0G
A1UdDgQWBBQAEO9PPyj6D+BMrNAZtp1TIekzmjA1BgkrBgEEAYI3FQcEKDAmBh4qhQMCAjIBCYS9
vzKHgZsnhN2PTYGwkXeB1RaDgXACAQECAQAwggGFBgNVHSMEggF8MIIBeIAUJKxkS5Z2oh9HaB3/
0ZGCUsWC8oehggFSpIIBTjCCAUoxHjAcBgkqhkiG9w0BCQEWD2RpdEBtaW5zdnlhei5ydTELMAkG
A1UEBhMCUlUxHDAaBgNVBAgMEzc3INCzLiDQnNC+0YHQutCy0LAxFTATBgNVBAcMDNCc0L7RgdC6
0LLQsDE/MD0GA1UECQw2MTI1Mzc1INCzLiDQnNC+0YHQutCy0LAsINGD0LsuINCi0LLQtdGA0YHQ
utCw0Y8sINC0LiA3MSwwKgYDVQQKDCPQnNC40L3QutC+0LzRgdCy0Y/Qt9GMINCg0L7RgdGB0LjQ
uDEYMBYGBSqFA2QBEg0xMDQ3NzAyMDI2NzAxMRowGAYIKoUDA4EDAQESDDAwNzcxMDQ3NDM3NTFB
MD8GA1UEAww40JPQvtC70L7QstC90L7QuSDRg9C00L7RgdGC0L7QstC10YDRj9GO0YnQuNC5INGG
0LXQvdGC0YCCClqUfBoAAAAAAWEwJQYDVR0lBB4wHAYIKwYBBQUHAwIGCCsGAQUFBwMEBgYqhQNk
AgIwMQYJKwYBBAGCNxUKBCQwIjAKBggrBgEFBQcDAjAKBggrBgEFBQcDBDAIBgYqhQNkAgIwHQYD
VR0gBBYwFDAIBgYqhQNkcQEwCAYGKoUDZHECMIIBSwYFKoUDZHAEggFAMIIBPAw00KHQmtCX0Jgg
ItCa0YDQuNC/0YLQvtCf0YDQviBDU1AiICjQstC10YDRgdC40Y8gNC4wKQxa0J/QkNCaICLQo9C0
0L7RgdGC0L7QstC10YDRj9GO0YnQuNC5INGG0LXQvdGC0YAgItCa0YDQuNC/0YLQvtCf0YDQviDQ
o9CmIiDQstC10YDRgdC40LggMi4wDFPQodC10YDRgtC40YTQuNC60LDRgiDRgdC+0L7RgtCy0LXR
gtGB0YLQstC40Y8g4oSWINCh0KQvMTI0LTMwMTAg0L7RgiAzMC4xMi4yMDE2INCzLgxT0KHQtdGA
0YLQuNGE0LjQutCw0YIg0YHQvtC+0YLQstC10YLRgdGC0LLQuNGPIOKEliDQodCkLzEyOC0yOTgz
INC+0YIgMTguMTEuMjAxNiDQsy4wPwYFKoUDZG8ENgw00KHQmtCX0JggItCa0YDQuNC/0YLQvtCf
0YDQviBDU1AiICjQstC10YDRgdC40Y8gNC4wKTBzBgNVHR8EbDBqMDagNKAyhjBodHRwOi8vcnVj
LnNhbXJlZ2lvbi5ydS9ydWNzb19jcnlwdG9wcm9fMjAxNy5jcmwwMKAuoCyGKmh0dHA6Ly8xMC4w
LjQwLjU5L3J1Y3NvX2NyeXB0b3Byb18yMDE3LmNybDBABggrBgEFBQcBAQQ0MDIwMAYIKwYBBQUH
MAGGJGh0dHA6Ly9jYS5zYW1yZWdpb24ucnUvb2NzcC9vY3NwLnNyZjArBgNVHRAEJDAigA8yMDE3
MTEyMTA3MzUxM1qBDzIwMTgxMTIxMDczNTEzWjAIBgYqhQMCAgMDQQC2nBsmuuLO87maN8AOwE2z
HDdln6IhLQTK+sK+MytXwn/WgyCW6u5Xqve94XNkLVgFhu2T3HaSXlD6Jrtmm8+4
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature></CallerInformationSystemSignature></SendRequestRequest></S:Body></S:Envelope>

код для Java

Код:

	public static Document signDoc(
	    String signMethod, 
	    String digestMethod, 
	    String XML_String, 
	    String id_SPRD)
	    throws Exception {
	    String XMLDSIG_SIGN_METHOD = signMethod;
	    String XMLDSIG_DETACHED_TRANSFORM_METHOD = Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS;
	    final KeyStore hdImageStore = KeyStore.getInstance(JCP.HD_STORE_NAME);//"HDImageStore"

	    hdImageStore.load(null, null);
 	    final PrivateKey privateKey =
	        (PrivateKey) hdImageStore.getKey("HDImageStoreOVI", "XXXXXX".toCharArray());
	    final X509Certificate cert =
	        (X509Certificate) hdImageStore.getCertificate("HDImageStoreOVI");
	    final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

	    dbf.setNamespaceAware(true);
	    final DocumentBuilder documentBuilder = dbf.newDocumentBuilder();
	    final Document doc;
        
		ByteArrayInputStream is = new ByteArrayInputStream(XML_String.getBytes()); //getBytes("UTF_8")
        
		doc = documentBuilder.parse(is);
	    
		final XMLSignature sig = new XMLSignature(doc, "", XMLDSIG_SIGN_METHOD, XMLDSIG_DETACHED_TRANSFORM_METHOD);
	    final Element anElement = doc.getDocumentElement();
	    anElement.appendChild(sig.getElement());
	    Transform.register(SmevTransformSpi.ALGORITHM_URN, SmevTransformSpi.class.getName());
	    final Transforms transforms = new Transforms(doc);
	    
		transforms.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE);
	    transforms.addTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS);//Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS
	    transforms.addTransform(SmevTransformSpi.ALGORITHM_URN);
	    
		sig.addDocument("#"+id_SPRD, transforms, digestMethod);  //org.apache.xml.security.signature.XMLSignature
	    org.apache.xml.security.signature.Reference ref = sig.getSignedInfo().item(0);

	    sig.addKeyInfo(cert);
	    sig.sign(privateKey);
	    
	    //signDocVer(doc);
	    
	    return  doc;
	    
	}

В результате ошибка:
ЭП-ОВ не соответствует подписанным данным: Ошибка проверки ЭП: Нарушена целостность ЭП.

Не совсем понятно, данные которые подписывались, не соответствуют данным которые проверяются, или содержимое блока ds:Signature не соответствует требованиям СМЭВ-3.

Подскажите что делаю не так, пожалуйста.

читаемые XML

на подпись

Код:

<?xml version="1.0" encoding="UTF-8"?>
<SendRequestRequest
	xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.2"
	xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.2"
	xmlns:ns3="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/faults/1.2">
	<SenderProvidedRequestData Id="SIGNED_BY_CONSUMER">
		<MessageID>4cba8e51-1b78-11e8-b6d6-0018f3be243e</MessageID>
		<ReferenceMessageID>4cba8e51-1b78-11e8-b6d6-0018f3be243e</ReferenceMessageID>
		<ns2:MessagePrimaryContent>
			<ns1:FNSVipULRequest
				xmlns:ns1="urn://x-artefacts-fns-vipul-tosmv-ru/311-14/4.0.5" ИдДок="22ED0D32-F3F2-0693-E050-A8C0D3C81091"
				НомерДела="БН">
				<ns1:ЗапросЮЛ>
					<ns1:ИННЮЛ>7730592673</ns1:ИННЮЛ>
				</ns1:ЗапросЮЛ>
			</ns1:FNSVipULRequest>
		</ns2:MessagePrimaryContent>
	</SenderProvidedRequestData>
</SendRequestRequest>  

в СМЭВ-3

Код:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"
	xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
	<SOAP-ENV:Header />
	<S:Body>
		<SendRequestRequest
			xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.2"
			xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.2"
			xmlns:ns3="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/faults/1.2">
			<SenderProvidedRequestData Id="SIGNED_BY_CONSUMER">
				<MessageID>4cba8e51-1b78-11e8-b6d6-0018f3be243e</MessageID>
				<ReferenceMessageID>4cba8e51-1b78-11e8-b6d6-0018f3be243e
				</ReferenceMessageID>
				<ns2:MessagePrimaryContent>
					<ns1:FNSVipULRequest
						xmlns:ns1="urn://x-artefacts-fns-vipul-tosmv-ru/311-14/4.0.5"
						ИдДок="22ED0D32-F3F2-0693-E050-A8C0D3C81091" НомерДела="БН">
						<ns1:ЗапросЮЛ>
							<ns1:ИННЮЛ>7730592673</ns1:ИННЮЛ>
						</ns1:ЗапросЮЛ>
					</ns1:FNSVipULRequest>
				</ns2:MessagePrimaryContent>
			</SenderProvidedRequestData>
			<CallerInformationSystemSignature>
				<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:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/>
<ds:Reference URI="#SIGNED_BY_CONSUMER">
<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:Transform Algorithm="urn://smev-gov-ru/xmldsig/transform"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
<ds:DigestValue>BMVQj9D19kLc/BcX41hPKs6IbcoZMIrYy20onE1Y9y8=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
irxPa2QIxGYJsJytXs+cPG/dVRjnajdmb3SNgMx3/sSNgELywkHuW2gaiRyjzyv5S7vBcOBe6Nzw
tqpOuIWZsw==
</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>
MIII2zCCCIqgAwIBAgIRAXnKy0gwAJ2y5xGPztT9DugwCAYGKoUDAgIDMIIBeTEfMB0GCSqGSIb3
DQEJARYQcnVjQHNhbXJlZ2lvbi5ydTEYMBYGBSqFA2QBEg0xMDk2MzE1MDAzMDgwMRowGAYIKoUD
A4EDAQESDDAwNjMxNTg1NjMyNTELMAkGA1UEBhMCUlUxLTArBgNVBAgMJDYzINCh0LDQvNCw0YDR
gdC60LDRjyDQvtCx0LvQsNGB0YLRjDEVMBMGA1UEBwwM0KHQsNC80LDRgNCwMTowOAYDVQQJDDHR
g9C7LiDQnNC+0LvQvtC00L7Qs9Cy0LDRgNC00LXQudGB0LrQsNGPLCDQtC4gMjEwMVMwUQYDVQQL
DErQo9C/0YDQsNCy0LvQtdC90LjQtSDQuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC5INCx0LXQ
t9C+0L/QsNGB0L3QvtGB0YLQuDEdMBsGA1UECgwU0JPQmtCjINCh0J4g0KDQptCj0J8xHTAbBgNV
BAMMFNCT0JrQoyDQodCeINCg0KbQo9CfMB4XDTE3MTEyMTA3MzUxNFoXDTE4MTEyMTA3NDUxNFow
ggF+MRkwFwYJKoZIhvcNAQkBFgp0Z2xAdGdsLnJ1MRowGAYIKoUDA4EDAQESDDAwNjMyMDAwMTc0
MTEYMBYGBSqFA2QBEg0xMDM2MzAxMDc4MDU0MVYwVAYDVQQKDE3QkNC00LzQuNC90LjRgdGC0YDQ
sNGG0LjRjyDQs9C+0YDQvtC00YHQutC+0LPQviDQvtC60YDRg9Cz0LAg0KLQvtC70YzRj9GC0YLQ
uDEkMCIGA1UECQwb0L/Quy4g0KHQstC+0LHQvtC00YssINC0LiA0MRkwFwYDVQQHDBDQotC+0LvR
jNGP0YLRgtC4MS0wKwYDVQQIDCQ2MyDQodCw0LzQsNGA0YHQutCw0Y8g0L7QsdC70LDRgdGC0Ywx
CzAJBgNVBAYTAlJVMVYwVAYDVQQDDE3QkNC00LzQuNC90LjRgdGC0YDQsNGG0LjRjyDQs9C+0YDQ
vtC00YHQutC+0LPQviDQvtC60YDRg9Cz0LAg0KLQvtC70YzRj9GC0YLQuDBjMBwGBiqFAwICEzAS
BgcqhQMCAiQABgcqhQMCAh4BA0MABECC3shVHlRZIH/IhVBcta5WXzV3gTl+MkFephKAx6ku91Ww
puFtFx+iSFzh69kCbYLZLM6auNWXItsxEd0Z2/E4o4IE4DCCBNwwDgYDVR0PAQH/BAQDAgP4MB0G
A1UdDgQWBBQAEO9PPyj6D+BMrNAZtp1TIekzmjA1BgkrBgEEAYI3FQcEKDAmBh4qhQMCAjIBCYS9
vzKHgZsnhN2PTYGwkXeB1RaDgXACAQECAQAwggGFBgNVHSMEggF8MIIBeIAUJKxkS5Z2oh9HaB3/
0ZGCUsWC8oehggFSpIIBTjCCAUoxHjAcBgkqhkiG9w0BCQEWD2RpdEBtaW5zdnlhei5ydTELMAkG
A1UEBhMCUlUxHDAaBgNVBAgMEzc3INCzLiDQnNC+0YHQutCy0LAxFTATBgNVBAcMDNCc0L7RgdC6
0LLQsDE/MD0GA1UECQw2MTI1Mzc1INCzLiDQnNC+0YHQutCy0LAsINGD0LsuINCi0LLQtdGA0YHQ
utCw0Y8sINC0LiA3MSwwKgYDVQQKDCPQnNC40L3QutC+0LzRgdCy0Y/Qt9GMINCg0L7RgdGB0LjQ
uDEYMBYGBSqFA2QBEg0xMDQ3NzAyMDI2NzAxMRowGAYIKoUDA4EDAQESDDAwNzcxMDQ3NDM3NTFB
MD8GA1UEAww40JPQvtC70L7QstC90L7QuSDRg9C00L7RgdGC0L7QstC10YDRj9GO0YnQuNC5INGG
0LXQvdGC0YCCClqUfBoAAAAAAWEwJQYDVR0lBB4wHAYIKwYBBQUHAwIGCCsGAQUFBwMEBgYqhQNk
AgIwMQYJKwYBBAGCNxUKBCQwIjAKBggrBgEFBQcDAjAKBggrBgEFBQcDBDAIBgYqhQNkAgIwHQYD
VR0gBBYwFDAIBgYqhQNkcQEwCAYGKoUDZHECMIIBSwYFKoUDZHAEggFAMIIBPAw00KHQmtCX0Jgg
ItCa0YDQuNC/0YLQvtCf0YDQviBDU1AiICjQstC10YDRgdC40Y8gNC4wKQxa0J/QkNCaICLQo9C0
0L7RgdGC0L7QstC10YDRj9GO0YnQuNC5INGG0LXQvdGC0YAgItCa0YDQuNC/0YLQvtCf0YDQviDQ
o9CmIiDQstC10YDRgdC40LggMi4wDFPQodC10YDRgtC40YTQuNC60LDRgiDRgdC+0L7RgtCy0LXR
gtGB0YLQstC40Y8g4oSWINCh0KQvMTI0LTMwMTAg0L7RgiAzMC4xMi4yMDE2INCzLgxT0KHQtdGA
0YLQuNGE0LjQutCw0YIg0YHQvtC+0YLQstC10YLRgdGC0LLQuNGPIOKEliDQodCkLzEyOC0yOTgz
INC+0YIgMTguMTEuMjAxNiDQsy4wPwYFKoUDZG8ENgw00KHQmtCX0JggItCa0YDQuNC/0YLQvtCf
0YDQviBDU1AiICjQstC10YDRgdC40Y8gNC4wKTBzBgNVHR8EbDBqMDagNKAyhjBodHRwOi8vcnVj
LnNhbXJlZ2lvbi5ydS9ydWNzb19jcnlwdG9wcm9fMjAxNy5jcmwwMKAuoCyGKmh0dHA6Ly8xMC4w
LjQwLjU5L3J1Y3NvX2NyeXB0b3Byb18yMDE3LmNybDBABggrBgEFBQcBAQQ0MDIwMAYIKwYBBQUH
MAGGJGh0dHA6Ly9jYS5zYW1yZWdpb24ucnUvb2NzcC9vY3NwLnNyZjArBgNVHRAEJDAigA8yMDE3
MTEyMTA3MzUxM1qBDzIwMTgxMTIxMDczNTEzWjAIBgYqhQMCAgMDQQC2nBsmuuLO87maN8AOwE2z
HDdln6IhLQTK+sK+MytXwn/WgyCW6u5Xqve94XNkLVgFhu2T3HaSXlD6Jrtmm8+4
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature></CallerInformationSystemSignature></SendRequestRequest></S:Body></S:Envelope>


Вверх


Offline

ty134

 


#2
Оставлено
:

27 февраля 2018 г. 9:07:28(UTC)

ty134

Статус: Участник

Группы: Участники

Зарегистрирован: 19.03.2015(UTC)
Сообщений: 26
Ангилла

сравнил с эталонным примером, убрал

Код:

//!!transforms.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE);

результат не изменился

Код:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><S:Body><SendRequestRequest xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.2" xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.2" xmlns:ns3="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/faults/1.2"><SenderProvidedRequestData Id="SIGNED_BY_CONSUMER"><MessageID>61f238f1-1b83-11e8-bf39-0018f3be243e</MessageID><ReferenceMessageID>61f238f1-1b83-11e8-bf39-0018f3be243e</ReferenceMessageID><ns2:MessagePrimaryContent><ns1:FNSVipULRequest xmlns:ns1="urn://x-artefacts-fns-vipul-tosmv-ru/311-14/4.0.5" ИдДок="22ED0D32-F3F2-0693-E050-A8C0D3C81091" НомерДела="БН"><ns1:ЗапросЮЛ><ns1:ИННЮЛ>7730592673</ns1:ИННЮЛ></ns1:ЗапросЮЛ></ns1:FNSVipULRequest></ns2:MessagePrimaryContent></SenderProvidedRequestData><CallerInformationSystemSignature><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:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/>
<ds:Reference URI="#SIGNED_BY_CONSUMER">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:Transform Algorithm="urn://smev-gov-ru/xmldsig/transform"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
<ds:DigestValue>91laE+BENZ1y0OGmHW5HeQopHOZKEX9MpcQZqDstDxE=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
r5GrlG3mNdvFb3DsdGQ5hPAsDfzeyrxRzUL+AIu8MALYeIxQc8gH7xDif65Re0Lsl/FnjRls71Mv
bWI2J/Y+UQ==
</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>
MIII2zCCCIqgAwIBAgIRAXnKy0gwAJ2y5xGPztT9DugwCAYGKoUDAgIDMIIBeTEfMB0GCSqGSIb3
DQEJARYQcnVjQHNhbXJlZ2lvbi5ydTEYMBYGBSqFA2QBEg0xMDk2MzE1MDAzMDgwMRowGAYIKoUD
A4EDAQESDDAwNjMxNTg1NjMyNTELMAkGA1UEBhMCUlUxLTArBgNVBAgMJDYzINCh0LDQvNCw0YDR
gdC60LDRjyDQvtCx0LvQsNGB0YLRjDEVMBMGA1UEBwwM0KHQsNC80LDRgNCwMTowOAYDVQQJDDHR
g9C7LiDQnNC+0LvQvtC00L7Qs9Cy0LDRgNC00LXQudGB0LrQsNGPLCDQtC4gMjEwMVMwUQYDVQQL
DErQo9C/0YDQsNCy0LvQtdC90LjQtSDQuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC5INCx0LXQ
t9C+0L/QsNGB0L3QvtGB0YLQuDEdMBsGA1UECgwU0JPQmtCjINCh0J4g0KDQptCj0J8xHTAbBgNV
BAMMFNCT0JrQoyDQodCeINCg0KbQo9CfMB4XDTE3MTEyMTA3MzUxNFoXDTE4MTEyMTA3NDUxNFow
ggF+MRkwFwYJKoZIhvcNAQkBFgp0Z2xAdGdsLnJ1MRowGAYIKoUDA4EDAQESDDAwNjMyMDAwMTc0
MTEYMBYGBSqFA2QBEg0xMDM2MzAxMDc4MDU0MVYwVAYDVQQKDE3QkNC00LzQuNC90LjRgdGC0YDQ
sNGG0LjRjyDQs9C+0YDQvtC00YHQutC+0LPQviDQvtC60YDRg9Cz0LAg0KLQvtC70YzRj9GC0YLQ
uDEkMCIGA1UECQwb0L/Quy4g0KHQstC+0LHQvtC00YssINC0LiA0MRkwFwYDVQQHDBDQotC+0LvR
jNGP0YLRgtC4MS0wKwYDVQQIDCQ2MyDQodCw0LzQsNGA0YHQutCw0Y8g0L7QsdC70LDRgdGC0Ywx
CzAJBgNVBAYTAlJVMVYwVAYDVQQDDE3QkNC00LzQuNC90LjRgdGC0YDQsNGG0LjRjyDQs9C+0YDQ
vtC00YHQutC+0LPQviDQvtC60YDRg9Cz0LAg0KLQvtC70YzRj9GC0YLQuDBjMBwGBiqFAwICEzAS
BgcqhQMCAiQABgcqhQMCAh4BA0MABECC3shVHlRZIH/IhVBcta5WXzV3gTl+MkFephKAx6ku91Ww
puFtFx+iSFzh69kCbYLZLM6auNWXItsxEd0Z2/E4o4IE4DCCBNwwDgYDVR0PAQH/BAQDAgP4MB0G
A1UdDgQWBBQAEO9PPyj6D+BMrNAZtp1TIekzmjA1BgkrBgEEAYI3FQcEKDAmBh4qhQMCAjIBCYS9
vzKHgZsnhN2PTYGwkXeB1RaDgXACAQECAQAwggGFBgNVHSMEggF8MIIBeIAUJKxkS5Z2oh9HaB3/
0ZGCUsWC8oehggFSpIIBTjCCAUoxHjAcBgkqhkiG9w0BCQEWD2RpdEBtaW5zdnlhei5ydTELMAkG
A1UEBhMCUlUxHDAaBgNVBAgMEzc3INCzLiDQnNC+0YHQutCy0LAxFTATBgNVBAcMDNCc0L7RgdC6
0LLQsDE/MD0GA1UECQw2MTI1Mzc1INCzLiDQnNC+0YHQutCy0LAsINGD0LsuINCi0LLQtdGA0YHQ
utCw0Y8sINC0LiA3MSwwKgYDVQQKDCPQnNC40L3QutC+0LzRgdCy0Y/Qt9GMINCg0L7RgdGB0LjQ
uDEYMBYGBSqFA2QBEg0xMDQ3NzAyMDI2NzAxMRowGAYIKoUDA4EDAQESDDAwNzcxMDQ3NDM3NTFB
MD8GA1UEAww40JPQvtC70L7QstC90L7QuSDRg9C00L7RgdGC0L7QstC10YDRj9GO0YnQuNC5INGG
0LXQvdGC0YCCClqUfBoAAAAAAWEwJQYDVR0lBB4wHAYIKwYBBQUHAwIGCCsGAQUFBwMEBgYqhQNk
AgIwMQYJKwYBBAGCNxUKBCQwIjAKBggrBgEFBQcDAjAKBggrBgEFBQcDBDAIBgYqhQNkAgIwHQYD
VR0gBBYwFDAIBgYqhQNkcQEwCAYGKoUDZHECMIIBSwYFKoUDZHAEggFAMIIBPAw00KHQmtCX0Jgg
ItCa0YDQuNC/0YLQvtCf0YDQviBDU1AiICjQstC10YDRgdC40Y8gNC4wKQxa0J/QkNCaICLQo9C0
0L7RgdGC0L7QstC10YDRj9GO0YnQuNC5INGG0LXQvdGC0YAgItCa0YDQuNC/0YLQvtCf0YDQviDQ
o9CmIiDQstC10YDRgdC40LggMi4wDFPQodC10YDRgtC40YTQuNC60LDRgiDRgdC+0L7RgtCy0LXR
gtGB0YLQstC40Y8g4oSWINCh0KQvMTI0LTMwMTAg0L7RgiAzMC4xMi4yMDE2INCzLgxT0KHQtdGA
0YLQuNGE0LjQutCw0YIg0YHQvtC+0YLQstC10YLRgdGC0LLQuNGPIOKEliDQodCkLzEyOC0yOTgz
INC+0YIgMTguMTEuMjAxNiDQsy4wPwYFKoUDZG8ENgw00KHQmtCX0JggItCa0YDQuNC/0YLQvtCf
0YDQviBDU1AiICjQstC10YDRgdC40Y8gNC4wKTBzBgNVHR8EbDBqMDagNKAyhjBodHRwOi8vcnVj
LnNhbXJlZ2lvbi5ydS9ydWNzb19jcnlwdG9wcm9fMjAxNy5jcmwwMKAuoCyGKmh0dHA6Ly8xMC4w
LjQwLjU5L3J1Y3NvX2NyeXB0b3Byb18yMDE3LmNybDBABggrBgEFBQcBAQQ0MDIwMAYIKwYBBQUH
MAGGJGh0dHA6Ly9jYS5zYW1yZWdpb24ucnUvb2NzcC9vY3NwLnNyZjArBgNVHRAEJDAigA8yMDE3
MTEyMTA3MzUxM1qBDzIwMTgxMTIxMDczNTEzWjAIBgYqhQMCAgMDQQC2nBsmuuLO87maN8AOwE2z
HDdln6IhLQTK+sK+MytXwn/WgyCW6u5Xqve94XNkLVgFhu2T3HaSXlD6Jrtmm8+4
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature></CallerInformationSystemSignature></SendRequestRequest></S:Body></S:Envelope>

Код:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1">
   <S:Body>
      <ns2:SendRequestRequest xmlns:ns3="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/faults/1.1" xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.1">
         <ns:SenderProvidedRequestData Id="SIGNED_BY_CONSUMER" xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" xmlns:ns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.1">	<ns:MessageID>db0486d0-3c08-11e5-95e2-d4c9eff07b77</ns:MessageID><ns2:MessagePrimaryContent><ns1:BreachRequest xmlns:ns1="urn://x-artefacts-gibdd-gov-ru/breach/root/1.0"  xmlns:ns2="urn://x-artefacts-gibdd-gov-ru/breach/commons/1.0"  xmlns:ns3="urn://x-artefacts-smev-gov-ru/supplementary/commons/1.0.1" Id="PERSONAL_SIGNATURE"> <ns1:RequestedInformation> <ns2:RegPointNum>Т785ЕС57</ns2:RegPointNum> </ns1:RequestedInformation> <ns1:Governance> <ns2:Name>ГИБДД РФ</ns2:Name> <ns2:Code>GIBDD</ns2:Code> <ns2:OfficialPerson> <ns3:FamilyName>Загурский</ns3:FamilyName> <ns3:FirstName>Андрей</ns3:FirstName> <ns3:Patronymic>Петрович</ns3:Patronymic> </ns2:OfficialPerson></ns1:Governance> </ns1:BreachRequest> </ns2:MessagePrimaryContent>	<ns:TestMessage/></ns:SenderProvidedRequestData>
         <ns2:CallerInformationSystemSignature><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:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/><ds:Reference URI="#SIGNED_BY_CONSUMER"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/><ds:Transform Algorithm="urn://smev-gov-ru/xmldsig/transform"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/><ds:DigestValue>/jXl70XwnttJB5sSokwh8SaVHwo2gjgILSu0qBaLUAo=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>J3746ks34pOcPGQpKzc0sz3n9+gjPtzZbSEEs4c3sTwbtfdaY7N/hxXzEIvXc+3ad9bc35Y8yBhZ/BYbloGt+Q==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIBcDCCAR2gAwIBAgIEHVmVKDAKBgYqhQMCAgMFADAtMRAwDgYDVQQLEwdTWVNURU0xMQwwCgYDVQQKEwNJUzIxCzAJBgNVBAYTAlJVMB4XDTE1MDUwNzEyMTUzMFoXDTE4MDUwNjEyMTUzMFowLTEQMA4GA1UECxMHU1lTVEVNMTEMMAoGA1UEChMDSVMyMQswCQYDVQQGEwJSVTBjMBwGBiqFAwICEzASBgcqhQMCAiMBBgcqhQMCAh4BA0MABEDoWGZlTUWD43G1N7TEm14+QyXrJWProrzoDoCJRem169q4bezFOUODcNooQJNg3PtAizkWeFcX4b93u8fpVy7RoyEwHzAdBgNVHQ4EFgQUaRG++MAcPZvK/E2vR1BBl5G7s5EwCgYGKoUDAgIDBQADQQCg25vA3RJL3kgcJhVOHA86vnkMAtZYr6HBPa7LpEo0HJrbBF0ygKk50app1lzPdZ5TtK2itfmNgTYiuQHX3+nE</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature></ns2:CallerInformationSystemSignature>
      </ns2:SendRequestRequest>
   </S:Body>
</S:Envelope>

Вверх


Offline

daniil.g

 


#3
Оставлено
:

27 февраля 2018 г. 13:41:06(UTC)

daniil.g

Статус: Новичок

Группы: Участники

Зарегистрирован: 27.02.2018(UTC)
Сообщений: 1

Автор: ty134 Перейти к цитате

Подскажите что делаю не так, пожалуйста.

Попробуйте проверить алгоритм формирования хэша и подписи по этой статье: http://blog.gin.su/
Она мне сильно помогла некоторое время назад: следуя методическим рекомендациям не удавалось получить валидную подпись. А следуя этой статье — подпись проходит.


Вверх


Offline

ty134

 


#4
Оставлено
:

28 февраля 2018 г. 8:55:39(UTC)

ty134

Статус: Участник

Группы: Участники

Зарегистрирован: 19.03.2015(UTC)
Сообщений: 26
Ангилла

Цитата:

4. Общее описание процесса работы СМЭВ3 расписано в методических рекоммендациях
Проблемму представляет сам процесс подписания XML, который описан общими словами.
Суть в следующем:
Для каждого типа пакета определяется ключевой раздел, например для типа SendRequestRequest — это раздел <ns:SenderProvidedRequestData>. Этот раздел необходимо преобразовать: Сначала каноникализировать в соответствии со стандартом C14N, а потом произвести трансформацию СМЭВ, фактически поменяв названия элементов на порядковые, удаляются все переносы строк и пробелы между элементами.

Daniil, что то не соображу: (очень надеюсь на Ваш ответ)

у меня есть раздел(Element) xml, который находится в SenderProvidedRequestData, мне нужно его подписать и подпись положить в CallerInformationSystemSignature.

Вариант первый:
на каноникализацию и трансформацию подаю SenderProvidedRequestData, потом подписываю, подпись в CallerInformationSystemSignature и передаю в СМЭВ. Внимание, данные в SenderProvidedRequestData не изменяются.

Вариант второй:
раздел SenderProvidedRequestData каноникализирую и трансформирую, потом подписываю, подпись в CallerInformationSystemSignature и передаю в СМЭВ.

Какой вариант правильный?

Если верен Первый вариант, то про JAXB и требования возможности генерации клиента стандартными средствами (заявленными в СМЭВ 3, если не ошибаюсь), можно забыть и совершенно понятна ошибка, я ей передаю данные до преобразования, а подписываю после преобразования.

……………………………………………………………………………………………………………………………..
xml подписанные CSP собираю практически вручную (копирую в блокноте узлы), проверяю на стенде, подпись проходит, в JCP ничего не получается,
при этом пакеты генерируются одной программой(на входе одинаковые данные), только вызываются разные криптопровайдеры,
— для КриптоПро CSP вызываю WEB-servis и получаю все в виде строки,
— для КриптоПро JCP подписываю или в клиенте и потом .setCallerInformationSystemSignature, или перехватываю messageContext и там непосредственно с Document

Вариант 1 — собрал по частям CNTR-C, CNTR-C в блокноте — на стенде все ОК

Код:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><S:Body>
<SendRequestRequest xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.2" xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.2" xmlns:ns3="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/faults/1.2">
<SenderProvidedRequestData Id="SIGNED_BY_CONSUMER"><MessageID>b7f3204e-1c52-11e8-988d-0018f3be243e</MessageID><ReferenceMessageID>b7f3204e-1c52-11e8-988d-0018f3be243e</ReferenceMessageID><ns2:MessagePrimaryContent><ns1:FNSVipULRequest xmlns:ns1="urn://x-artefacts-fns-vipul-tosmv-ru/311-14/4.0.5" ИдДок="22ED0D32-F3F2-0693-E050-A8C0D3C81091" НомерДела="БН"><ns1:ЗапросЮЛ><ns1:ИННЮЛ>7730592673</ns1:ИННЮЛ></ns1:ЗапросЮЛ></ns1:FNSVipULRequest></ns2:MessagePrimaryContent></SenderProvidedRequestData>
<CallerInformationSystemSignature><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411" /><Reference URI="#SIGNED_BY_CONSUMER"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><Transform Algorithm="urn://smev-gov-ru/xmldsig/transform" /><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411" /><DigestValue>qik+oQ3KzXZOEp0dNLet2d8qO2W19qieahkXYGIOwcw=</DigestValue></Reference></SignedInfo><SignatureValue>+5M08NlOB/9ocz5w+2o/34ZkIA34EPg8elzYMT3wHgrkS/8m0RerAr52iPfd8ikU6V22MFXrfync2Azx8Ktzcg==</SignatureValue><KeyInfo><X509Data><X509Certificate>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</X509Certificate></X509Data></KeyInfo></Signature></CallerInformationSystemSignature></SendRequestRequest></S:Body></S:Envelope>

Вариант 2 — здесь все программа сгенерировала — на стенде все ОК

Код:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><S:Body><SendRequestRequest xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.2" xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.2" xmlns:ns3="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/faults/1.2"><SenderProvidedRequestData Id="SIGNED_BY_CONSUMER"><MessageID>4332511a-1c5c-11e8-91bf-0018f3be243e</MessageID><ReferenceMessageID>4332511a-1c5c-11e8-91bf-0018f3be243e</ReferenceMessageID><ns2:MessagePrimaryContent><ns1:FNSVipULRequest xmlns:ns1="urn://x-artefacts-fns-vipul-tosmv-ru/311-14/4.0.5" ИдДок="22ED0D32-F3F2-0693-E050-A8C0D3C81091" НомерДела="БН"><ns1:ЗапросЮЛ><ns1:ИННЮЛ>7730592673</ns1:ИННЮЛ></ns1:ЗапросЮЛ></ns1:FNSVipULRequest></ns2:MessagePrimaryContent></SenderProvidedRequestData><CallerInformationSystemSignature><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/><Reference URI="#SIGNED_BY_CONSUMER"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/><Transform Algorithm="urn://smev-gov-ru/xmldsig/transform"/><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/><DigestValue>sqP80HQ71bsi1nr1NqHahp4OQl4N/XvjdyhoRJn9kt0=</DigestValue></Reference></SignedInfo><SignatureValue>VL7uiePAHOnxAqqiTJg0MxPvMVCMQ8h3PI2GFvM7swk+43NwcnfzQSS1NGwhOzFo6ssSh7Wg6KYnnP6+5w4jVw==</SignatureValue><KeyInfo><X509Data><X509Certificate>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</X509Certificate></X509Data></KeyInfo></Signature></CallerInformationSystemSignature></SendRequestRequest></S:Body></S:Envelope>

Отредактировано пользователем 28 февраля 2018 г. 11:01:41(UTC)
 | Причина: Не указана


Вверх


Offline

ty134

 


#5
Оставлено
:

28 февраля 2018 г. 13:54:23(UTC)

ty134

Статус: Участник

Группы: Участники

Зарегистрирован: 19.03.2015(UTC)
Сообщений: 26
Ангилла

нашел пример на основе, но результат тот же

https://github.com/vladk1m0/smevx-crypto


Вверх


Offline

Евгений Афанасьев

 


#6
Оставлено
:

28 февраля 2018 г. 16:02:23(UTC)

Евгений Афанасьев

Статус: Сотрудник

Группы: Участники

Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,787
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 656 раз в 619 постах

Отличная статья про СМЭВ3+Java

Отредактировано пользователем 28 февраля 2018 г. 16:02:55(UTC)
 | Причина: Не указана

Тех. поддержка
База знаний
Логирование JCP
Логирование JTLS
Тест JCP и сбор диаг. информации
Скачать JCP, JCSP и JTLS
Скачать Android CSP + SDK


Вверх


Offline

ty134

 


#7
Оставлено
:

1 марта 2018 г. 11:03:42(UTC)

ty134

Статус: Участник

Группы: Участники

Зарегистрирован: 19.03.2015(UTC)
Сообщений: 26
Ангилла

взял пример SendRequestRequestNoAttach.xml
сделал все как в — Отличная статья про СМЭВ3+Java
дайджест который получил — <ds:DigestValue>/jXl70XwnttJB5sSokwh8SaVHwo2gjgILSu0qBaLUAo=</ds:DigestValue>
дайджест из примера — <ds:DigestValue>/jXl70XwnttJB5sSokwh8SaVHwo2gjgILSu0qBaLUAo=</ds:DigestValue>

прогоняю на портале:
Версия схемы* 1.1 получаю — ЭП-ОВ не подтверждена: Ошибка проверки ЭП: Нарушена целостность ЭП
Версия схемы* 1.2 получаю — Ошибка при проверке XML-сообщения: cvc-complex-type.2.4.c: The matching wildcard is strict, but no
declaration can be found for element ‘ns2:SendRequestRequest’.
ЭП-ОВ подтверждена

Код:

<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1">
   <S:Body>
      <ns2:SendRequestRequest xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.1" xmlns:ns3="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/faults/1.1">
         <ns:SenderProvidedRequestData xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.1" Id="SIGNED_BY_CONSUMER" xmlns:ns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1">
         <ns:MessageID>db0486d0-3c08-11e5-95e2-d4c9eff07b77</ns:MessageID>
         <ns2:MessagePrimaryContent>
         <ns1:BreachRequest xmlns:ns1="urn://x-artefacts-gibdd-gov-ru/breach/root/1.0" xmlns:ns2="urn://x-artefacts-gibdd-gov-ru/breach/commons/1.0" xmlns:ns3="urn://x-artefacts-smev-gov-ru/supplementary/commons/1.0.1" Id="PERSONAL_SIGNATURE"> 
         <ns1:RequestedInformation>
         <ns2:RegPointNum>Т785ЕС57</ns2:RegPointNum> 
         </ns1:RequestedInformation>
         <ns1:Governance> 
         <ns2:Name>ГИБДД РФ</ns2:Name> 
         <ns2:Code>GIBDD</ns2:Code> 
         <ns2:OfficialPerson> 
         <ns3:FamilyName>Загурский</ns3:FamilyName> 
         <ns3:FirstName>Андрей</ns3:FirstName> 
         <ns3:Patronymic>Петрович</ns3:Patronymic> 
         </ns2:OfficialPerson></ns1:Governance> 
         </ns1:BreachRequest> </ns2:MessagePrimaryContent>	
         <ns:TestMessage/></ns:SenderProvidedRequestData>
         <ns2:CallerInformationSystemSignature><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="sigID">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/>
<ds:Reference URI="#SIGNED_BY_CONSUMER">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:Transform Algorithm="urn://smev-gov-ru/xmldsig/transform"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
<ds:DigestValue>/jXl70XwnttJB5sSokwh8SaVHwo2gjgILSu0qBaLUAo=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
49jdOY4oOrmtSevftSb7Qewxqb7ndegzTcoyckyT3HwV4NolB1Qgal/9x4Wzpm3B+ALSYb27q2rV
7xNGhS7v6w==
</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>
MIII2zCCCIqgAwIBAgIRAXnKy0gwAJ2y5xGPztT9DugwCAYGKoUDAgIDMIIBeTEfMB0GCSqGSIb3
DQEJARYQcnVjQHNhbXJlZ2lvbi5ydTEYMBYGBSqFA2QBEg0xMDk2MzE1MDAzMDgwMRowGAYIKoUD
A4EDAQESDDAwNjMxNTg1NjMyNTELMAkGA1UEBhMCUlUxLTArBgNVBAgMJDYzINCh0LDQvNCw0YDR
gdC60LDRjyDQvtCx0LvQsNGB0YLRjDEVMBMGA1UEBwwM0KHQsNC80LDRgNCwMTowOAYDVQQJDDHR
g9C7LiDQnNC+0LvQvtC00L7Qs9Cy0LDRgNC00LXQudGB0LrQsNGPLCDQtC4gMjEwMVMwUQYDVQQL
DErQo9C/0YDQsNCy0LvQtdC90LjQtSDQuNC90YTQvtGA0LzQsNGG0LjQvtC90L3QvtC5INCx0LXQ
t9C+0L/QsNGB0L3QvtGB0YLQuDEdMBsGA1UECgwU0JPQmtCjINCh0J4g0KDQptCj0J8xHTAbBgNV
BAMMFNCT0JrQoyDQodCeINCg0KbQo9CfMB4XDTE3MTEyMTA3MzUxNFoXDTE4MTEyMTA3NDUxNFow
ggF+MRkwFwYJKoZIhvcNAQkBFgp0Z2xAdGdsLnJ1MRowGAYIKoUDA4EDAQESDDAwNjMyMDAwMTc0
MTEYMBYGBSqFA2QBEg0xMDM2MzAxMDc4MDU0MVYwVAYDVQQKDE3QkNC00LzQuNC90LjRgdGC0YDQ
sNGG0LjRjyDQs9C+0YDQvtC00YHQutC+0LPQviDQvtC60YDRg9Cz0LAg0KLQvtC70YzRj9GC0YLQ
uDEkMCIGA1UECQwb0L/Quy4g0KHQstC+0LHQvtC00YssINC0LiA0MRkwFwYDVQQHDBDQotC+0LvR
jNGP0YLRgtC4MS0wKwYDVQQIDCQ2MyDQodCw0LzQsNGA0YHQutCw0Y8g0L7QsdC70LDRgdGC0Ywx
CzAJBgNVBAYTAlJVMVYwVAYDVQQDDE3QkNC00LzQuNC90LjRgdGC0YDQsNGG0LjRjyDQs9C+0YDQ
vtC00YHQutC+0LPQviDQvtC60YDRg9Cz0LAg0KLQvtC70YzRj9GC0YLQuDBjMBwGBiqFAwICEzAS
BgcqhQMCAiQABgcqhQMCAh4BA0MABECC3shVHlRZIH/IhVBcta5WXzV3gTl+MkFephKAx6ku91Ww
puFtFx+iSFzh69kCbYLZLM6auNWXItsxEd0Z2/E4o4IE4DCCBNwwDgYDVR0PAQH/BAQDAgP4MB0G
A1UdDgQWBBQAEO9PPyj6D+BMrNAZtp1TIekzmjA1BgkrBgEEAYI3FQcEKDAmBh4qhQMCAjIBCYS9
vzKHgZsnhN2PTYGwkXeB1RaDgXACAQECAQAwggGFBgNVHSMEggF8MIIBeIAUJKxkS5Z2oh9HaB3/
0ZGCUsWC8oehggFSpIIBTjCCAUoxHjAcBgkqhkiG9w0BCQEWD2RpdEBtaW5zdnlhei5ydTELMAkG
A1UEBhMCUlUxHDAaBgNVBAgMEzc3INCzLiDQnNC+0YHQutCy0LAxFTATBgNVBAcMDNCc0L7RgdC6
0LLQsDE/MD0GA1UECQw2MTI1Mzc1INCzLiDQnNC+0YHQutCy0LAsINGD0LsuINCi0LLQtdGA0YHQ
utCw0Y8sINC0LiA3MSwwKgYDVQQKDCPQnNC40L3QutC+0LzRgdCy0Y/Qt9GMINCg0L7RgdGB0LjQ
uDEYMBYGBSqFA2QBEg0xMDQ3NzAyMDI2NzAxMRowGAYIKoUDA4EDAQESDDAwNzcxMDQ3NDM3NTFB
MD8GA1UEAww40JPQvtC70L7QstC90L7QuSDRg9C00L7RgdGC0L7QstC10YDRj9GO0YnQuNC5INGG
0LXQvdGC0YCCClqUfBoAAAAAAWEwJQYDVR0lBB4wHAYIKwYBBQUHAwIGCCsGAQUFBwMEBgYqhQNk
AgIwMQYJKwYBBAGCNxUKBCQwIjAKBggrBgEFBQcDAjAKBggrBgEFBQcDBDAIBgYqhQNkAgIwHQYD
VR0gBBYwFDAIBgYqhQNkcQEwCAYGKoUDZHECMIIBSwYFKoUDZHAEggFAMIIBPAw00KHQmtCX0Jgg
ItCa0YDQuNC/0YLQvtCf0YDQviBDU1AiICjQstC10YDRgdC40Y8gNC4wKQxa0J/QkNCaICLQo9C0
0L7RgdGC0L7QstC10YDRj9GO0YnQuNC5INGG0LXQvdGC0YAgItCa0YDQuNC/0YLQvtCf0YDQviDQ
o9CmIiDQstC10YDRgdC40LggMi4wDFPQodC10YDRgtC40YTQuNC60LDRgiDRgdC+0L7RgtCy0LXR
gtGB0YLQstC40Y8g4oSWINCh0KQvMTI0LTMwMTAg0L7RgiAzMC4xMi4yMDE2INCzLgxT0KHQtdGA
0YLQuNGE0LjQutCw0YIg0YHQvtC+0YLQstC10YLRgdGC0LLQuNGPIOKEliDQodCkLzEyOC0yOTgz
INC+0YIgMTguMTEuMjAxNiDQsy4wPwYFKoUDZG8ENgw00KHQmtCX0JggItCa0YDQuNC/0YLQvtCf
0YDQviBDU1AiICjQstC10YDRgdC40Y8gNC4wKTBzBgNVHR8EbDBqMDagNKAyhjBodHRwOi8vcnVj
LnNhbXJlZ2lvbi5ydS9ydWNzb19jcnlwdG9wcm9fMjAxNy5jcmwwMKAuoCyGKmh0dHA6Ly8xMC4w
LjQwLjU5L3J1Y3NvX2NyeXB0b3Byb18yMDE3LmNybDBABggrBgEFBQcBAQQ0MDIwMAYIKwYBBQUH
MAGGJGh0dHA6Ly9jYS5zYW1yZWdpb24ucnUvb2NzcC9vY3NwLnNyZjArBgNVHRAEJDAigA8yMDE3
MTEyMTA3MzUxM1qBDzIwMTgxMTIxMDczNTEzWjAIBgYqhQMCAgMDQQC2nBsmuuLO87maN8AOwE2z
HDdln6IhLQTK+sK+MytXwn/WgyCW6u5Xqve94XNkLVgFhu2T3HaSXlD6Jrtmm8+4
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature></ns2:CallerInformationSystemSignature>
      </ns2:SendRequestRequest>
   </S:Body>
</S:Envelope>

Вверх


Offline

ty134

 


#8
Оставлено
:

1 марта 2018 г. 12:22:01(UTC)

ty134

Статус: Участник

Группы: Участники

Зарегистрирован: 19.03.2015(UTC)
Сообщений: 26
Ангилла

Ой не, все нормально, огромное спасибо VBurmistrov
КриптоПРО самое КриптоПРО в мире
деньги буду хранить в АльфаБанке, если они у меня конечно будут.


Вверх


Offline

Andefraim

 


#9
Оставлено
:

27 марта 2018 г. 17:30:47(UTC)

Andefraim

Статус: Новичок

Группы: Участники

Зарегистрирован: 27.03.2018(UTC)
Сообщений: 2
Российская Федерация

Ошибка «ЭП-ОВ не соответствует подписанным данным: Ошибка проверки ЭП: Нарушена целостность ЭП»

Алгоритм подписания

Код:


XmlDocument document = GetDocument();
X509Certificate2 clientCertificate = GetCertificate();

SignedXml signedDoc = new SignedXml(document);
Reference reference = new Reference();
reference.Uri = "#signed";
reference.DigestMethod = CPSignedXml.XmlDsigGost3411UrlObsolete;
XmlDsigExcC14NTransform transform = new XmlDsigExcC14NTransform();
reference.AddTransform(transform);
reference.AddTransform(new XmlDsigSmevTransform());
reference.AddTransform(new XmlDsigEnvelopedSignatureTransform());
signedDoc.AddReference(reference);
KeyInfo keyInfo = new KeyInfo();
keyInfo.AddClause(new KeyInfoX509Data(clientCertificate));
signedDoc.KeyInfo = keyInfo;
signedDoc.SignedInfo.CanonicalizationMethod = SignedXml.XmlDsigExcC14NTransformUrl;
signedDoc.SignedInfo.SignatureMethod = CPSignedXml.XmlDsigGost3410UrlObsolete;
signedDoc.SigningKey = clientCertificate.PrivateKey;
signedDoc.ComputeSignature();

const string nsSoap = "http://schemas.xmlsoap.org/soap/envelope/";
const string nsSmev = "urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1";
XmlNamespaceManager namespaceManager = new XmlNamespaceManager(document.NameTable);
namespaceManager.AddNamespace("soap", nsSoap);
namespaceManager.AddNamespace("smev", nsSmev);
document.SelectSingleNode("/soap:Envelope/soap:Body/smev:SendRequestRequest/smev:CallerInformationSystemSignature", namespaceManager).AppendChild(document.ImportNode(signedDoc.GetXml(), true));

Результат подписания

Код:


<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1"><S:Body><ns2:SendRequestRequest xmlns:ns3="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/faults/1.1" xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.1"><ns:SenderProvidedRequestData Id="signed" xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" xmlns:ns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.1"><ns:MessageID>db0486d0-3c08-11e5-95e2-d4c9eff07b77</ns:MessageID><ns2:MessagePrimaryContent><ns1:BreachRequest xmlns:ns1="urn://x-artefacts-gibdd-gov-ru/breach/root/1.0" xmlns:ns2="urn://x-artefacts-gibdd-gov-ru/breach/commons/1.0" xmlns:ns3="urn://x-artefacts-smev-gov-ru/supplementary/commons/1.0.1" Id="PERSONAL_SIGNATURE"><ns1:RequestedInformation><ns2:RegPointNum>Т785ЕС57</ns2:RegPointNum></ns1:RequestedInformation><ns1:Governance><ns2:Name>ГИБДД РФ</ns2:Name><ns2:Code>GIBDD</ns2:Code><ns2:OfficialPerson><ns3:FamilyName>Загурский</ns3:FamilyName><ns3:FirstName>Андрей</ns3:FirstName><ns3:Patronymic>Петрович</ns3:Patronymic></ns2:OfficialPerson></ns1:Governance></ns1:BreachRequest></ns2:MessagePrimaryContent><ns:TestMessage /></ns:SenderProvidedRequestData><ns2:CallerInformationSystemSignature><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411" /><Reference URI="#signed"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><Transform Algorithm="urn://smev-gov-ru/xmldsig/transform" /><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411" /><DigestValue>HBccaGRf0BvRL6sxZnIlNPTlTuPNB8msmQOjt2K46fY=</DigestValue></Reference></SignedInfo><SignatureValue>3yqjcs82E1EsVNxMlsNV+QbNVOEx6DkJ2jQL/BnnP7GXw3Ta2LbnnaB+gtH1cv1yep7OJ5mL2iwfzMuZrIlCZw==</SignatureValue><KeyInfo><X509Data><X509Certificate>MIIIWzCCCAqgAwIBAgIRBNwQTuSUkOKA5xG8rT7FuuAwCAYGKoUDAgIDMIIBFTEYMBYGBSqFA2QBEg0xMDM3NzAwMDg1NDQ0MRowGAYIKoUDA4EDAQESDDAwNzcxNzEwNzk5MTEvMC0GA1UECQwm0YPQuy4g0KHRg9GJ0ZHQstGB0LrQuNC5INCy0LDQuyDQtC4gMTgxHzAdBgkqhkiG9w0BCQEWEHFjYUBjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJVMRkwFwYDVQQIDBDQsy4g0JzQvtGB0LrQstCwMRUwEwYDVQQHDAzQnNC+0YHQutCy0LAxJTAjBgNVBAoMHNCe0J7QniAi0JrQoNCY0J/QotCeLdCf0KDQniIxJTAjBgNVBAMMHNCe0J7QniAi0JrQoNCY0J/QotCeLdCf0KDQniIwHhcNMTcxMDEwMTMwNDAxWhcNMTgxMDEwMTMxNDAxWjCB+DEYMBYGBSqFA2QBEg0xMDg3NzQ2Nzk2NjMxMRowGAYIKoUDA4EDAQESDDAwNzcxNjYwOTk5OTEnMCUGA1UECQwe0JjQstC+0LLQsNGPLCDQtC4gMSwg0YHRgtGALiAxMSEwHwYJKoZIhvcNAQkBFhJncmFkaW5hckB1bmlzYWIucnUxCzAJBgNVBAYTAlJVMRwwGgYDVQQIDBM3NyDQsy4g0JzQvtGB0LrQstCwMRUwEwYDVQQHDAzQnNC+0YHQutCy0LAxGDAWBgNVBAoMD9Ce0J7QniAi0K7QkdChIjEYMBYGA1UEAwwP0J7QntCeICLQrtCR0KEiMGMwHAYGKoUDAgITMBIGByqFAwICJAAGByqFAwICHgEDQwAEQK1KhDRBLBpMkYS+rjViPr1CsikUDUPv59aPjUEBQeeX8k4DoLKpEmlKMjk67u5R9cwY0yHnZsh4VSmZVy/HVXajggVLMIIFRzAOBgNVHQ8BAf8EBAMCA/gwHQYDVR0OBBYEFCvU8rvSKnMVDJenlvQggY1JQnz2MB8GCSsGAQQBgjcVBwQSMBAGCCqFAwICLgAIAgEBAgEAMIIBXAYDVR0jBIIBUzCCAU+AFCkh8hnXRYTGqXTmTsUUWJBoMQjKoYIBKaSCASUwggEhMRowGAYIKoUDA4EDAQESDDAwNzcxMDQ3NDM3NTEYMBYGBSqFA2QBEg0xMDQ3NzAyMDI2NzAxMR4wHAYJKoZIhvcNAQkBFg9kaXRAbWluc3Z5YXoucnUxPDA6BgNVBAkMMzEyNTM3NSDQsy4g0JzQvtGB0LrQstCwINGD0LsuINCi0LLQtdGA0YHQutCw0Y8g0LQuNzEsMCoGA1UECgwj0JzQuNC90LrQvtC80YHQstGP0LfRjCDQoNC+0YHRgdC40LgxFTATBgNVBAcMDNCc0L7RgdC60LLQsDEcMBoGA1UECAwTNzcg0LMuINCc0L7RgdC60LLQsDELMAkGA1UEBhMCUlUxGzAZBgNVBAMMEtCj0KYgMSDQmNChINCT0KPQpoIKGTLeMgADAAAH0DAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwJwYJKwYBBAGCNxUKBBowGDAKBggrBgEFBQcDAjAKBggrBgEFBQcDBDATBgNVHSAEDDAKMAgGBiqFA2RxATArBgNVHRAEJDAigA8yMDE3MTAxMDEzMDQwMFqBDzIwMTgxMDEwMTMwNDAwWjCCATYGBSqFA2RwBIIBKzCCAScMJ9Cf0JDQmtCcICLQmtGA0LjQv9GC0L7Qn9GA0L4gSFNNIiB2LjEuMAxa0J/QkNCaICLQo9C00L7RgdGC0L7QstC10YDRj9GO0YnQuNC5INGG0LXQvdGC0YAgItCa0YDQuNC/0YLQvtCf0YDQviDQo9CmIiDQstC10YDRgdC40LggMi4wDE/QodC10YDRgtC40YTQuNC60LDRgiDRgdC+0L7RgtCy0LXRgtGB0YLQstC40Y8g4oSWINCh0KQvMTI0LTI1NjUg0L7RgiAyMC4wMy4yMDE1DE/QodC10YDRgtC40YTQuNC60LDRgiDRgdC+0L7RgtCy0LXRgtGB0YLQstC40Y8g4oSWINCh0KQvMTI4LTI4ODEg0L7RgiAxMi4wNC4yMDE2MCoGBSqFA2RvBCEMH9Ch0JrQl9CYINCa0YDQuNC/0YLQvtCf0YDQviBDU1Awga4GA1UdHwSBpjCBozBRoE+gTYZLaHR0cDovL2NkcC5jcnlwdG9wcm8ucnUvcmEvY2RwLzI5MjFmMjE5ZDc0NTg0YzZhOTc0ZTY0ZWM1MTQ1ODkwNjgzMTA4Y2EuY3JsME6gTKBKhkhodHRwOi8vcTIwLmNyeXB0b3Byby5ydS9jZHAvMjkyMWYyMTlkNzQ1ODRjNmE5NzRlNjRlYzUxNDU4OTA2ODMxMDhjYS5jcmwwgfMGCCsGAQUFBwEBBIHmMIHjMDIGCCsGAQUFBzABhiZodHRwOi8vcXMuY3J5cHRvcHJvLnJ1L29jc3BxMi9vY3NwLnNyZjBXBggrBgEFBQcwAoZLaHR0cDovL2NkcC5jcnlwdG9wcm8ucnUvcmEvYWlhLzI5MjFmMjE5ZDc0NTg0YzZhOTc0ZTY0ZWM1MTQ1ODkwNjgzMTA4Y2EuY3J0MFQGCCsGAQUFBzAChkhodHRwOi8vcTIwLmNyeXB0b3Byby5ydS9haWEvMjkyMWYyMTlkNzQ1ODRjNmE5NzRlNjRlYzUxNDU4OTA2ODMxMDhjYS5jcnQwCAYGKoUDAgIDA0EAyrC2wjNzcgDcdSHkCbUbnTECZvalT7GBd5sO0rixSp31MoqngHIf+3Vlkzb+ESDIgaIG4/YEgHCnG3B9H7f0sw==</X509Certificate></X509Data></KeyInfo></Signature></ns2:CallerInformationSystemSignature></ns2:SendRequestRequest></S:Body></S:Envelope>

На портале (https://smev3.gosuslugi.ru/portal/checkxmlform.jsp) проходит проверку с результатом «ЭЦП подтвержена».
Однако в ответ на запрос приходит следующее сообщение

Код:


<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>ЭП-ОВ не соответствует подписанным данным: Ошибка проверки ЭП: Нарушена целостность ЭП.</faultstring><detail><ns3:SignatureVerificationFault xmlns:ns3="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/faults/1.1" xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.1"><Code>tsmev3:PRODUCTION_AREA:TSMEV3_CORE2 : TR:SYNC:SPS:2</Code><Description>SMEV-100:ЭП-ОВ не соответствует подписанным данным: Ошибка проверки ЭП: Нарушена целостность ЭП.</Description><ns3:SignatureVerificationFault>SignatureIsInvalid</ns3:SignatureVerificationFault></ns3:SignatureVerificationFault></detail></soap:Fault></soap:Body></soap:Envelope>

Как успешно отправить запрос в СМЭВ 3?


Вверх


Offline

accessx

 


#10
Оставлено
:

28 мая 2018 г. 14:24:31(UTC)

accessx

Статус: Новичок

Группы: Участники

Зарегистрирован: 24.05.2018(UTC)
Сообщений: 4

Автор: ty134 Перейти к цитате

взял пример SendRequestRequestNoAttach.xml
сделал все как в — Отличная статья про СМЭВ3+Java
дайджест который получил — <ds:DigestValue>/jXl70XwnttJB5sSokwh8SaVHwo2gjgILSu0qBaLUAo=</ds:DigestValue>
дайджест из примера — <ds:DigestValue>/jXl70XwnttJB5sSokwh8SaVHwo2gjgILSu0qBaLUAo=</ds:DigestValue>

прогоняю на портале:
Версия схемы* 1.1 получаю — ЭП-ОВ не подтверждена: Ошибка проверки ЭП: Нарушена целостность ЭП

У меня тоже на данном примере возникает ошибка проверки ЭП, хотя DigestValue тоже равен /jXl70XwnttJB5sSokwh8SaVHwo2gjgILSu0qBaLUAo=. Вы пишите, что у вас всё ОК. Как вы этого добились, с чем была связана ошибка?
Спасибо.


Вверх

Пользователи, просматривающие эту тему

Guest

Быстрый переход
 

Вы не можете создавать новые темы в этом форуме.

Вы не можете отвечать в этом форуме.

Вы не можете удалять Ваши сообщения в этом форуме.

Вы не можете редактировать Ваши сообщения в этом форуме.

Вы не можете создавать опросы в этом форуме.

Вы не можете голосовать в этом форуме.

Вопрос: После отправки отчета в ПФР пришла критическая ошибка — Нарушена целостность ЭЦП

15.01.2018 10:09
2 345

Решение вопроса:

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

Эта информация оказалась полезной?

Как можно улучшить этот ответ?

Время на прочтение
16 мин

Количество просмотров 42K

Система межведомственного электронного взаимодействия (СМЭВ) задумывалась как цифровая среда предоставления услуг и исполнения государственных и муниципальных функций в электронной форме.

В настоящее время СМЭВ продолжает расширять свои возможности и вовлекать все большее количество участников взаимодействия.

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

В этой статье мы поговорим о том, как своими силами подписать запросы и проверить электронные подписи ответов СМЭВ версии 3.0, и о паре интересных нюансов, с которыми пришлось при этом столкнуться.

Здравствуйте!

Может возникнуть вопрос. Почему своими силами? Когда для СМЭВ 3 есть целый Технологический портал, где

  • опубликована вся документация и методические указания,
  • есть раздел с часто задаваемыми вопросами,
  • можно скачать актуальную версию библиотек клиента СМЭВ 3,
  • предоставлены примеры полных конвертов сообщений с подписями,
  • можно даже проверить онлайн свое сообщение или из примера на соответствие схемам сервиса СМЭВ и на предмет валидности его электронной подписи

Все верно, портал, безусловно, крайне полезный, и всеми его подсказками и инструментами можно и нужно пользоваться, но вот код на Java напишем свой.

По той простой причине, что уже есть собственная информационная система, работающая с форматами электронной подписи XMLDSig, XAdES, в которой применяются библиотеки проекта Apache Santuario, реализующие основные стандарты безопасности для XML. А также библиотеки, входящие в состав КриптоПро JCSP, помимо работы с XML, обеспечивающие API криптографических функций СКЗИ КриптоПро CSP.

Написание собственных методов для работы с электронными подписями СМЭВ 3 в данном случае выглядит более целесообразно, нежели разворачивание полного клиента поставляемого:
ФГБУ НИИ «Восход» (до 21 марта 2016 года ФГУП НИИ «Восход») или интеграция, его отдельных классов и пакетов.

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

Анализ исходных данных

Загружаем с портала СМЭВ 3:

  • актуальную версию документа Методические рекомендации по работе с ЕСМЭВ версия 3.4.0.3
  • примеры полных конвертов сообщений, отправляемых в СМЭВ 3

Если уже умеем формировать обычный XMLDSig или подписывать, например, конверты сообщений СМЭВ 2, то больше всего начинает интересовать, чем же отличается конверт с подписью СМЭВ 3 от СМЭВ 2.

Открываем пример конверта СМЭВ 3 SendRequestRequestNoAttach.xml

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1">
   <S:Body>
      <ns2:SendRequestRequest xmlns:ns3="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/faults/1.1" xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.1">
         <ns:SenderProvidedRequestData Id="SIGNED_BY_CONSUMER" xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" xmlns:ns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.1">	<ns:MessageID>db0486d0-3c08-11e5-95e2-d4c9eff07b77</ns:MessageID><ns2:MessagePrimaryContent><ns1:BreachRequest xmlns:ns1="urn://x-artefacts-gibdd-gov-ru/breach/root/1.0"  xmlns:ns2="urn://x-artefacts-gibdd-gov-ru/breach/commons/1.0"  xmlns:ns3="urn://x-artefacts-smev-gov-ru/supplementary/commons/1.0.1" Id="PERSONAL_SIGNATURE"> <ns1:RequestedInformation> <ns2:RegPointNum>Т785ЕС57</ns2:RegPointNum> </ns1:RequestedInformation> <ns1:Governance> <ns2:Name>ГИБДД РФ</ns2:Name> <ns2:Code>GIBDD</ns2:Code> <ns2:OfficialPerson> <ns3:FamilyName>Загурский</ns3:FamilyName> <ns3:FirstName>Андрей</ns3:FirstName> <ns3:Patronymic>Петрович</ns3:Patronymic> </ns2:OfficialPerson></ns1:Governance> </ns1:BreachRequest> </ns2:MessagePrimaryContent>	<ns:TestMessage/></ns:SenderProvidedRequestData>
         <ns2:CallerInformationSystemSignature><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:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/><ds:Reference URI="#SIGNED_BY_CONSUMER"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/><ds:Transform Algorithm="urn://smev-gov-ru/xmldsig/transform"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/><ds:DigestValue>/jXl70XwnttJB5sSokwh8SaVHwo2gjgILSu0qBaLUAo=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>J3746ks34pOcPGQpKzc0sz3n9+gjPtzZbSEEs4c3sTwbtfdaY7N/hxXzEIvXc+3ad9bc35Y8yBhZ/BYbloGt+Q==</ds:SignatureValue><ds:KeyInfo><ds:X509Data><ds:X509Certificate>MIIBcDCCAR2gAwIBAgIEHVmVKDAKBgYqhQMCAgMFADAtMRAwDgYDVQQLEwdTWVNURU0xMQwwCgYDVQQKEwNJUzIxCzAJBgNVBAYTAlJVMB4XDTE1MDUwNzEyMTUzMFoXDTE4MDUwNjEyMTUzMFowLTEQMA4GA1UECxMHU1lTVEVNMTEMMAoGA1UEChMDSVMyMQswCQYDVQQGEwJSVTBjMBwGBiqFAwICEzASBgcqhQMCAiMBBgcqhQMCAh4BA0MABEDoWGZlTUWD43G1N7TEm14+QyXrJWProrzoDoCJRem169q4bezFOUODcNooQJNg3PtAizkWeFcX4b93u8fpVy7RoyEwHzAdBgNVHQ4EFgQUaRG++MAcPZvK/E2vR1BBl5G7s5EwCgYGKoUDAgIDBQADQQCg25vA3RJL3kgcJhVOHA86vnkMAtZYr6HBPa7LpEo0HJrbBF0ygKk50app1lzPdZ5TtK2itfmNgTYiuQHX3+nE</ds:X509Certificate></ds:X509Data></ds:KeyInfo></ds:Signature></ns2:CallerInformationSystemSignature>
      </ns2:SendRequestRequest>
   </S:Body>
</S:Envelope>

Дедуктивным методом выясняется что:

  • больше не используется прием с выносом из содержимого тега Signature в Security заголовок элемента BinarySecurityToken с сертификатом открытого ключа проверки электронной подписи и ссылкой на него через SecurityTokenReference в теле самого Signature, как, например, в СМЭВ 2.4.6. Теперь сертификат должен находиться внутри Signature.
  • второе и, по сути, самое существенное и важное изменение, оказывающее большое влияние на процесс подписи — это добавление новой проприетарной трансформации:
    <ds:Transform Algorithm="urn://smev-gov-ru/xmldsig/transform"/>

Через эту трансформацию распространяются собственные правила каноникализации СМЭВ 3.

Каноникализация — процесс приведения данных, имеющих несколько возможных форм представления, к одному нормализованному стандартному виду.

Перед тем как посчитать хэш подписываемого атрибута в XML-конверте и подписать, необходимо выполнить его конвертацию в заданный правилами СМЭВ 3 вид.

В поисках описания трансформации urn://smev-gov-ru/xmldsig/transform открываем Методические рекомендации 3.4.0.3

Знакомимся с пунктом 4.4.2.1 Правила формирования электронной подписи сообщений

Формат подписи XMLDSig detached (https://www.w3.org/TR/xmldsig-core/)

Трансформация, дополнительно к канонизации urn://smev-gov-ru/xmldsig/transform

Требования к форматированию В XML-структуре подписи между элементами не допускается наличие текстовых узлов, в том числе переводов строки.

Пункт Методических указаний 12.4. ПРИЛОЖЕНИЕ 4: ОБРАЗЦОВАЯ РЕАЛИЗАЦИЯ ТРАНСФОРМАЦИИ URN://SMEV-GOV-RU/XMLDSIG/TRANSFORM
содержит Java класс SmevTransformSpi.java, реализующий алгоритм трансформации «urn://smev-gov-ru/xmldsig/transform», наследник org.apache.xml.security.transforms.TransformSpi из библиотеки Apache Santuario.

Таким образом, чтобы обеспечить каноникализацию подписываемого конверта СМЭВ 3, можно использовать в своем коде этот класс трансформации.

Единственным условием и ограничением в этом случае будет, что для обработки XML-документа при формировании подписи или ее проверки нужно использовать именно org.apache.xml.security.signature.XMLSignature из проекта Apache Santuario.

Задействовать инструменты из пакетов javax.xml.crypto.dsig или ru.CryptoPro.JCPxml.xmldsig просто так уже не получится.

Подготовка к подписи по правилам СМЭВ 3

Apache Santuario изначально ничего не знает про ГОСТ криптографические алгоритмы и СКЗИ КриптоПро.

В библиотеке xmlsec-1.5.0.jar в файле orgapachexmlsecurityresourceconfig.xml содержатся настройки только для работы с зарубежными криптографическими алгоритмами.

Чтобы он начал распознавать и применять ГОСТ, нужно выполнить его инициализацию.

По старинке это делалось так:

//APACHE-SANTUARIO INIT WITH CryptoPro JCP
        System.setProperty("org.apache.xml.security.resource.config", "resource/jcp.xml");
        org.apache.xml.security.Init.init();
        String cfile1 = System.getProperty("org.apache.xml.security.resource.config");
        LOGGER.log(Level.INFO, "Init class URL: " + org.apache.xml.security.Init.class.getProtectionDomain().getCodeSource().getLocation());
        LOGGER.log(Level.INFO, cfile1);

В новых версиях КриптоПро JCP (JCSP) инициализацию выполнит одна строчка:

ru.CryptoPro.JCPxml.xmldsig.JCPXMLDSigInit.init();

Теперь нужно Apache Santuario научить новым правилам трансформации, которые диктует СМЭВ 3. Для этого регистрируем класс трансформации:

  try {
                Transform.register(SmevTransformSpi.ALGORITHM_URN, SmevTransformSpi.class.getName());
                santuarioIgnoreLineBreaks(true);
                LOGGER.log(Level.INFO, "SmevTransformSpi has been initialized");
            } catch (AlgorithmAlreadyRegisteredException e) {
                LOGGER.log(Level.INFO, "SmevTransformSpi Algorithm already registered: " + e.getMessage());
            } 

Заодно сразу выполняем требование из Методических указаний:

Требования к форматированию В XML-структуре подписи между элементами не допускается наличие текстовых узлов, в том числе переводов строки.

santuarioIgnoreLineBreaks(true);

    private static final String IGNORE_LINE_BREAKS_FIELD = "ignoreLineBreaks";

/**
     * Apache Santuario privileged switch IgnoreLineBreaks property
     * 
     * @param mode
     */
    private void santuarioIgnoreLineBreaks(Boolean mode) {
        try {
            Boolean currMode = mode;
            AccessController.doPrivileged(new PrivilegedExceptionAction<Boolean>() {
                
                public Boolean run() throws Exception {
                    Field f = XMLUtils.class.getDeclaredField(IGNORE_LINE_BREAKS_FIELD);
                    f.setAccessible(true);
                    f.set(null, currMode);
                    return false;
                }
            });
            
        } catch (Exception e) {
            LOGGER.warning("santuarioIgnoreLineBreaks " + ExceptionUtils.getFullStackTrace(e));
        }
    }

Делается это в привилегированном блоке AccessController.doPrivileged
и через reflection, из-за особенности реализации свойства ignoreLineBreaks в Santuario.

Просто через настройку системного свойства:

System.setProperty("org.apache.xml.security.ignoreLineBreaks", "true");

не работает.

Через настройку опции JVM:

-Dcom.sun.org.apache.xml.internal.security.ignoreLineBreaks=true

работает.

Если взглянуть на код класса org.apache.xml.security.utils.XMLUtils, то можно увидеть, что поле ignoreLineBreaks статическое, инициализируется в привилегированном блоке из системного свойства «org.apache.xml.security.ignoreLineBreaks».

private static boolean ignoreLineBreaks =
        AccessController.doPrivileged(new PrivilegedAction<Boolean>() {
            public Boolean run() {
                return Boolean.valueOf(Boolean.getBoolean
                    ("org.apache.xml.security.ignoreLineBreaks"));
            }
        }).booleanValue();
public static boolean ignoreLineBreaks() {
        return ignoreLineBreaks;
    }

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

Т.е., если одно приложение выполняет подписи XMLDsig, СМЭВ 2 и СМЭВ 3, все XML документы, обработанные Santuario должны на выходе лишиться перевода строк.

С этим свойством, конечно, возникает вопрос к Apache Santuario:

Подпись сообщений СМЭВ 3

Для подписи документов СМЭВ 3 все готово.

Код подписания выглядит следующим образом:

private static final String XMLDSIG_MORE_GOSTR34102001_GOSTR3411 = "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411";
    private static final String XMLDSIG_MORE_GOSTR3411 = "http://www.w3.org/2001/04/xmldsig-more#gostr3411";
    private static final String CANONICALIZATION_METHOD = "http://www.w3.org/2001/10/xml-exc-c14n#";
    private static final String DS_SIGNATURE = "//ds:Signature";
    private static final String SIG_ID = "sigID";
    private static final String COULD_NOT_FIND_XML_ELEMENT_NAME = "ERROR! Could not find xmlElementName = ";
    private static final String GRID = "#";
    private static final String XML_SIGNATURE_ERROR = "xmlDSignature ERROR: ";

try {
            // инициализация объекта чтения XML-документа
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            
            // установка флага, определяющего игнорирование пробелов в
            // содержимом элементов при обработке XML-документа
            dbf.setIgnoringElementContentWhitespace(true);
            
            // установка флага, определяющего преобразование узлов CDATA в
            // текстовые узлы при обработке XML-документа
            dbf.setCoalescing(true);
            
            // установка флага, определяющего поддержку пространств имен при
            // обработке XML-документа
            dbf.setNamespaceAware(true);
            
// загрузка содержимого подписываемого документа на основе
            // установленных флагами правил из массива байтов data            DocumentBuilder documentBuilder = dbf.newDocumentBuilder();
         
           Document doc = documentBuilder.parse(new ByteArrayInputStream(data));
            
            /*
             * Добавление узла подписи <ds:Signature> в загруженный XML-документ
             */
            
            // алгоритм подписи (ГОСТ Р 34.10-2001)
            final String signMethod = XMLDSIG_MORE_GOSTR34102001_GOSTR3411;
            
            // алгоритм хеширования, используемый при подписи (ГОСТ Р 34.11-94)
            final String digestMethod = XMLDSIG_MORE_GOSTR3411;
            
            final String canonicalizationMethod = CANONICALIZATION_METHOD;
            
         
            String[][] filters = {{XPath2FilterContainer.SUBTRACT, DS_SIGNATURE}};
            String sigId = SIG_ID;
                
                // инициализация объекта формирования ЭЦП в соответствии с
                // алгоритмом ГОСТ Р 34.10-2001
                XMLSignature sig = new XMLSignature(doc, "", signMethod, canonicalizationMethod);
                
                // определение идентификатора первого узла подписи
               
                sig.setId(sigId);
                
                // получение корневого узла XML-документа
                Element anElement = null;
                if (xmlElementName == null) {
                    anElement = doc.getDocumentElement();
                } else {
                    NodeList nodeList = doc.getElementsByTagName(xmlElementName);
                    anElement = (Element) nodeList.item(0);
                }
                // = doc.getElementById("#AppData");
                // добавление в корневой узел XML-документа узла подписи
                if (anElement != null) {
                    anElement.appendChild(sig.getElement());
                } else {
                    throw new SignatureProcessorException(COULD_NOT_FIND_XML_ELEMENT_NAME + xmlElementName);
                }
                
                /*
                 * Определение правил работы с XML-документом и добавление в узел подписи этих
                 * правил
                 */
                
                // создание узла преобразований <ds:Transforms> обрабатываемого
                // XML-документа
                Transforms transforms = new Transforms(doc);
                
                // добавление в узел преобразований правил работы с документом
                // transforms.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE);
                transforms.addTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS);
                transforms.addTransform(SmevTransformSpi.ALGORITHM_URN);
                
                // добавление в узел подписи ссылок (узла <ds:Reference>),
                // определяющих правила работы с
                // XML-документом (обрабатывается текущий документ с заданными в
                // узле <ds:Transforms> правилами
                // и заданным алгоритмом хеширования)
                sig.addDocument(xmlElementID == null ? "" : GRID + xmlElementID, transforms, digestMethod);
                
                /*
                 * Создание подписи всего содержимого XML-документа на основе закрытого ключа,
                 * заданных правил и алгоритмов
                 */
                
                // создание внутри узла подписи узла <ds:KeyInfo> информации об
                // открытом ключе на основе
                // сертификата
                sig.addKeyInfo(x509Cert);
                
                // создание подписи XML-документа
                sig.sign(privateKey);
            
            // определение потока, в который осуществляется запись подписанного
            // XML-документа
            bais = new ByteArrayOutputStream();
            
            // инициализация объекта копирования содержимого XML-документа в
            // поток
            TransformerFactory tf = TransformerFactory.newInstance();
            
            // создание объекта копирования содержимого XML-документа в поток
            Transformer trans = tf.newTransformer();
            
            // копирование содержимого XML-документа в поток
            trans.transform(new DOMSource(doc), new StreamResult(bais));
            bais.close();
        } catch (TransformationException e) {
            throw new SignatureProcessorException("TransformationException " + XML_SIGNATURE_ERROR + e.getMessage());
        } catch (XMLSignatureException e) {
            throw new SignatureProcessorException("XMLSignatureException " + XML_SIGNATURE_ERROR + e.getMessage());
        } catch (TransformerException e) {
            throw new SignatureProcessorException("TransformerException " + XML_SIGNATURE_ERROR + e.getMessage());
        } catch (IOException e) {
            throw new SignatureProcessorException("IOException " + XML_SIGNATURE_ERROR + e.getMessage());
        } catch (XMLSecurityException e) {
            throw new SignatureProcessorException("XMLSecurityException " + XML_SIGNATURE_ERROR + e.getMessage());
        } catch (SAXException e) {
            throw new SignatureProcessorException("SAXException " + XML_SIGNATURE_ERROR + e.getMessage());
        } catch (ParserConfigurationException e) {
            throw new SignatureProcessorException(
                    "ParserConfigurationException " + XML_SIGNATURE_ERROR + e.getMessage());
        }
        return bais.toByteArray();

Основными параметрами здесь являются:

byte[] data, // XML сообщение в виде массива байтов

String xmlElementName, // имя элемента в XML вместе с префиксом, в который следует добавить подпись, для СМЭВ-3 в общем случае "ns2:CallerInformationSystemSignature"

String xmlElementID // ID элемента в XML (если присутствует) вместе с префиксом, на который следует поставить подпись, для СМЭВ-3 в общем случае "SIGNED_BY_CONSUMER"

X509Certificate certificate // сертификат открытого ключа проверки подписи

PrivateKey privateKey // закрытый ключ подписи

Проверка подписи сообщения СМЭВ 3

Код проверки подписи выглядит следующим образом:

private static final QName QNAME_SIGNATURE = new QName("http://www.w3.org/2000/09/xmldsig#", "Signature", "ds");
    private static final String SIGNATURE_NOT_FOUND = "Signature not found!";
    private static final String SIGNATURE_NOT_VALID = "Signature not valid";
    private static final String SMEV_SIGNATURE_PASSED_CORE_VALIDATION = "SmevSignature passed core validation";
    private static final String VERIFY_SIGNATURE_ON_XML_IO_EXCEPTION = "Verify signature on XML IOException: ";
    private static final String VERIFY_SIGNATURE_ON_XML_PARSER_CONFIGURATION_EXCEPTION = "Verify signature on XML ParserConfigurationException: ";
    private static final String VERIFY_SIGNATURE_ON_XML_SAX_EXCEPTION = "Verify signature on XML SAXException: ";
    private static final String VERIFY_SIGNATURE_ON_XML_XML_SIGNATURE_EXCEPTION = "Verify signature on XML XMLSignatureException: ";
    private static final String VERIFY_SIGNATURE_ON_XML_XML_SECURITY_EXCEPTION = "Verify signature on XML XMLSecurityException: ";
    private static final String ID = "Id";

   boolean coreValidity = true;
        try {
            DocumentBuilderFactory bf = DocumentBuilderFactory.newInstance();
            bf.setNamespaceAware(true);
            DocumentBuilder b = bf.newDocumentBuilder();
            Document doc = b.parse(new InputSource(new ByteArrayInputStream(signedXmlData)));
            
            NodeList sigs = doc.getElementsByTagNameNS(QNAME_SIGNATURE.getNamespaceURI(), QNAME_SIGNATURE.getLocalPart());
            org.apache.xml.security.signature.XMLSignature sig = null;
            sigSearch: {
                for (int i = 0; i < sigs.getLength(); i++) {
                    Element sigElement = (Element) sigs.item(i);
                    String sigId = sigElement.getAttribute(ID);
                    if (sigId != null) {
                        sig = new org.apache.xml.security.signature.XMLSignature(sigElement, "");
                        break sigSearch;
                    }
                }
                throw new XMLSignatureVerificationException(SIGNATURE_NOT_FOUND);
            }
            org.apache.xml.security.keys.KeyInfo ki = (org.apache.xml.security.keys.KeyInfo) sig.getKeyInfo();
            
            X509Certificate certificate = ki.getX509Certificate();
            
            if (!sig.checkSignatureValue(certificate.getPublicKey())) {
                coreValidity = false;
                LOGGER.log(Level.INFO, SIGNATURE_NOT_VALID);
            } else {
                LOGGER.log(Level.INFO, String.format(SMEV_SIGNATURE_PASSED_CORE_VALIDATION));
            }
            
        } catch (IOException e) {
            throw new XMLSignatureVerificationException(VERIFY_SIGNATURE_ON_XML_IO_EXCEPTION + ExceptionUtils.getStackTrace(e));
        } catch (ParserConfigurationException e) {
            throw new XMLSignatureVerificationException(VERIFY_SIGNATURE_ON_XML_PARSER_CONFIGURATION_EXCEPTION + ExceptionUtils.getStackTrace(e));
        } catch (SAXException e) {
            throw new XMLSignatureVerificationException(VERIFY_SIGNATURE_ON_XML_SAX_EXCEPTION + ExceptionUtils.getStackTrace(e));
        } catch (org.apache.xml.security.signature.XMLSignatureException e) {
            throw new XMLSignatureVerificationException(VERIFY_SIGNATURE_ON_XML_XML_SIGNATURE_EXCEPTION + ExceptionUtils.getStackTrace(e));
        } catch (XMLSecurityException e) {
            throw new XMLSignatureVerificationException(VERIFY_SIGNATURE_ON_XML_XML_SECURITY_EXCEPTION + ExceptionUtils.getStackTrace(e));
        }
        
        return coreValidity;

Проблемы. Хэш не совпадает

Внимание!

Для отладки использовался пример конверта СМЭВ 3 SendRequestRequestNoAttach.xml
Из него был удален элемент ds:Signature с целью подписать сообщение заново и сверить с оригиналом.

Несмотря на то, что метод подписи и трансформация SmevTransformSpi, взятая из Методических указаний, отрабатывали, на выходе был подписанный документ, подпись которого при онлайн-проверке на портале СМЭВ 3 трактовалась как

ЭП-ОВ не подтверждена: Ошибка проверки ЭП: Нарушена целостность ЭП

Почему

<ds:DigestValue>e76oVeYGapFDE+PV6glsj0XDjLHydLMd0cSkFPY8fWk=</ds:DigestValue>

не совпадал с оригинальным примером:

<ds:DigestValue>/jXl70XwnttJB5sSokwh8SaVHwo2gjgILSu0qBaLUAo==</ds:DigestValue>

Для диагностики причин в класс SmevTransformSpi в метод process был добавлен свой XMLEventWriter.

ByteArrayOutputStream baos = new ByteArrayOutputStream();
XMLEventWriter bdst =
outputFactory.get().createXMLEventWriter(baos, ENCODING_UTF_8); 

для параллельного анализа всех этапов трансформации.

Нормализованный элемент XML, на который требуется поставить подпись, выглядел следующим образом:

<ns1:SenderProvidedRequestData xmlns:ns1="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" Id="SIGNED_BY_CONSUMER"><ns1:MessageID>db0486d0-3c08-11e5-95e2-d4c9eff07b77</ns1:MessageID><ns2:MessagePrimaryContent xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.1"><ns3:BreachRequest xmlns:ns3="urn://x-artefacts-gibdd-gov-ru/breach/root/1.0" Id="PERSONAL_SIGNATURE"><ns3:RequestedInformation><ns4:RegPointNum xmlns:ns4="urn://x-artefacts-gibdd-gov-ru/breach/commons/1.0">Т785ЕС57</ns4:RegPointNum></ns3:RequestedInformation><ns3:Governance><ns4:Name>ГИБДД РФ</ns4:Name><ns4:Code>GIBDD</ns4:Code><ns4:OfficialPerson><ns5:FamilyName xmlns:ns5="urn://x-artefacts-smev-gov-ru/supplementary/commons/1.0.1">Загурский</ns5:FamilyName><ns5:FirstName>Андрей</ns5:FirstName><ns5:Patronymic>Петрович</ns5:Patronymic></ns4:OfficialPerson></ns3:Governance></ns3:BreachRequest></ns2:MessagePrimaryContent><ns1:TestMessage></ns1:TestMessage></ns1:SenderProvidedRequestData>

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

Во-вторых, привел в GitHub, где был выложен класс SmevTransformSpi более старой версии.

Старая версия класса трансформации выдала следующий нормализованный документ:

<ns1:SenderProvidedRequestData xmlns:ns1="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" Id="SIGNED_BY_CONSUMER"><ns1:MessageID>db0486d0-3c08-11e5-95e2-d4c9eff07b77</ns1:MessageID><ns2:MessagePrimaryContent xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.1"><ns3:BreachRequest xmlns:ns3="urn://x-artefacts-gibdd-gov-ru/breach/root/1.0" Id="PERSONAL_SIGNATURE"><ns3:RequestedInformation><ns4:RegPointNum xmlns:ns4="urn://x-artefacts-gibdd-gov-ru/breach/commons/1.0">Т785ЕС57</ns4:RegPointNum></ns3:RequestedInformation><ns3:Governance><ns5:Name xmlns:ns5="urn://x-artefacts-gibdd-gov-ru/breach/commons/1.0">ГИБДД РФ</ns5:Name><ns6:Code xmlns:ns6="urn://x-artefacts-gibdd-gov-ru/breach/commons/1.0">GIBDD</ns6:Code><ns7:OfficialPerson xmlns:ns7="urn://x-artefacts-gibdd-gov-ru/breach/commons/1.0"><ns8:FamilyName xmlns:ns8="urn://x-artefacts-smev-gov-ru/supplementary/commons/1.0.1">Загурский</ns8:FamilyName><ns9:FirstName xmlns:ns9="urn://x-artefacts-smev-gov-ru/supplementary/commons/1.0.1">Андрей</ns9:FirstName><ns10:Patronymic xmlns:ns10="urn://x-artefacts-smev-gov-ru/supplementary/commons/1.0.1">Петрович</ns10:Patronymic></ns7:OfficialPerson></ns3:Governance></ns3:BreachRequest></ns2:MessagePrimaryContent><ns1:TestMessage></ns1:TestMessage></ns1:SenderProvidedRequestData>

С ним хэш стал совпадать, а подпись успешно проходить валидацию.

Сравнение версий класса SmevTransformSpi показала, что помимо добавленных в новой реализации дополнительных функций логирования и диагностики в debug режиме:

if (logger.isDebugEnabled()) {
                debugStream = new DebugOutputStream(argDst);
                dst = outputFactory.get().createXMLEventWriter(debugStream, ENCODING_UTF_8);
            } else {
                dst = outputFactory.get().createXMLEventWriter(argDst, ENCODING_UTF_8);
            }

Класс из Методических указаний не содержит нужную строчку, или содержит опечатку:

Отсутствует строка:

prefixMappingStack.pop();

, которая удаляет первый объект из стека с префиксами

  Stack<List<Namespace>> prefixMappingStack = new Stack<List<Namespace>>();

, что приводило к неверной работе SmevTransformSpi.

Добавление этой строки в новую версию SmevTransformSpi.java решило проблему.

Работающий класс трансформации и конверт с подписью можно посмотреть в github.com/VBurmistrov/Smev3

Результаты

Подписание конвертов СМЭВ 3 выполняется успешно.

Сообщения проходят проверку на портале Электронного правительства Госуслуги

И в собственном приложении:

вопросы

Из нашей статьи вы узнаете:

В работе электронной подписи периодически возникают различные ошибки. Иногда они являются результатом неправильных действий пользователя, а иногда — это последствие технических неполадок.

Основные проблемы в работе ЭЦП

Мы выделили самые часто встречающиеся ошибки в работе КЭП. Ниже мы будем описывать причину проблемы и путь её решения.

Выбранная подпись не авторизована

Такая проблема появляется, когда используется новая КЭП на ЭТП (электронной торговой площадке), если пользователь не был зарегистрирован. То же самое происходит, когда не был зарегистрирован сам сертификат.

Решением данной проблемы является авторизация:

  1. Перейдите на главную страницу торговой площадки, а затем → ‎«Вход по ЭЦП».
  2. Выберите ‎«Авторизация ЭЦП‎» и нажмите кнопку «Пользователь организации‎».
  3. Подтвердите выбор нового ключа ЭЦП.
  4. В появившемся окне ‎«Идентификационные данные»‎ заполните все обязательные поля и нажмите «Отправить на рассмотрение‎».

В течение часа подпись будет зарегистрирована и ошибка исчезнет. Если же она всё-таки повторятся, то отключите антивирус или поставьте электронную торговую площадку в исключения.

ЭЦП проставлено сертификатом, на который нет заключённого соглашения

Такая проблема появляется при обращении в ПФР без заключённого с ними соглашения.

Чтобы решить проблему, нужно заключить договор с ПФР в письменном виде. Если же он уже был заключён, нужно проверить соответствие данных в документе с данными в сертификате электронной подписи.

‎Алгоритм ключа сертификата не поддерживается

Название ошибки говорит само за себя — тут либо программное обеспечение несовместимо, либо неправильно установлена КриптоПро CSP.

В первую очередь нужно проверить компьютер на совместимость с программными средствами. Если здесь всё нормально, то попробуйте переустановить КриптоПро CSP. Также проверьте хранилище сертификатов на наличие там закрытого ключа. В крайнем случае понадобится переустановка операционной системы.

Электронная подпись документа невалидна

Такая ошибка появляется при работе в системах «1С» как следствие того, что на устройстве не установлен корневой сертификат УЦ. Он нужен для подтверждения того, что удостоверяющий центр сертифицирован Минцифры.

Исправить ошибку можно путём установки соответствующего сертификата в правильное хранилище → ‎«‎Доверенные корневые центры сертификации»‎. Найти его можно на сайте удостоверяющего центра.

Невозможно создание объекта сервером программирования объектов ЭЦП

Подобная проблема может проявиться при подписании электронных документов и при создании запросов в информационных системах.

Чтобы исправить ошибку, достаточно переустановить КриптоПро CSP и КриптоПро ЭЦП Browser plug-in. Если ошибка сохраняется, то скачайте и установите capicom.dll. В крайнем случае отключите защитник Windows и центр обеспечения безопасности.

Ваш сертификат ключа подписи включён в список отозванных

Такая ошибка появляется, когда истекает срок действия сертификата. Решением является продление срока действия.

Если же ошибка возникает, а срок сертификата ещё не подошёл к концу, то нужно установить СОС (список отозванных сертификатов) и перезагрузить компьютер. Если это не помогло, свяжитесь с удостоверяющим центром.

Техническая поддержка продуктов «Астрал-ЭТ» и «1С-ЭТП» работает круглосуточно и поможет решить любую возникшую проблему.

У применения ЭЦП довольно много нюансов, которые в некоторых случаях требуют внимания к себе. Чтобы разобраться в них, мы подготовили материал, в котором вы найдёте ответы на основные вопросы, касающиеся использования ЭЦП.

Получение выписки ЕГРН с помощью электронной подписи

Вопрос получения такого свидетельства актуален при совершении любой сделки с недвижимостью. Заказать выписку можно на бумаге, либо в электронном формате.
Рассказываем, как получить электронную выписку с помощью ЭЦП и сколько это будет стоить.

Как получить выписку из ЕГРЮЛ с ЭЦП ФНС

Выписка из Единого государственного реестра юридических лиц содержит все основные сведения о юрлице. Она необходима для того, чтобы удостовериться или подтвердить данные государственной регистрации, уточнить сведения об адресе местонахождения юрлица и др. Выписку в электронном виде можно получить с помощью электронной подписи. Как это сделать? Отвечаем на этот вопрос в нашей статье.

Как оформить заявление на получение ЭЦП

Согласно правилам оформления ЭП, для получения электронной подписи необходимо подготовить пакет документов и подать заявление в удостоверяющий центр или МФЦ (в зависимости от вида подписи). В статье мы подробно рассмотрим все вопросы оформления электронной подписи: какие документы нужны, в каком порядке происходит получение сертификата и куда нужно обращаться.

Как выглядит электронная подпись

Увидеть ЭЦП в электронном документе своими глазами в буквальном смысле, конечно, нельзя, потому что это не просто какой-то графический символ. Однако можно, например, проверить документ, чтобы наглядно убедиться, что он подписан с помощью электронной подписи. В статье мы раскроем все основные вопросы, касающиеся подписания документов электронной подписью, а также выясним, какие средства и реквизиты для этого применяются.

Как зарегистрироваться в ЕИС

Единая информационная система в сфере закупок (ЕИС) создана для формирования, обработки и хранения данных о закупках. Это позволяет в значительной мере упростить доступ к сведениям о торгах. Рассказываем, что нужно для регистрации в ЕИС и в каком порядке проходит регистрация.

Как работает ЭП

Применение ЭЦП обеспечивает сохранность данных и неизменность подписанного документа, а также позволяет идентифицировать подписанта. Как же работает электронная подпись? Чтобы ответить на этот вопрос, нужно сначала разобраться как устроена подпись и какие средства шифрования используются для её применения. Об этом и пойдёт речь далее.

Как сделать КЭП для торгов

Для участия в торгах необходима квалифицированная электронная подпись. Она потребуется на всех этапах — от регистрации на электронной торговой площадке до подписания договора с контрагентом. Чтобы оформить квалифицированную ЭЦП для торгов, необходимо подать заявление в аккредитованный удостоверяющий центр. Детальное описание процедуры выпуска КЭП — в нашей статье.

Что такое корневой сертификат ЭЦП

В корневом сертификате содержатся сведения об удостоверяющем центре. Без него работа с электронной подписью невозможна. Где достать корневой сертификат? Как установить? Ответы на эти вопросы — в нашей статье.

Продление сертификата ЭП

Сертификаты электронной подписи имеют срок годности, по истечении которого нужно обращаться в удостоверяющий центр для продления. Рассказываем, как узнать срок действия сертификата и в каком порядке подаётся заявление на его продление.

Что такое сертификат ключа электронной подписи

В сертификате ключа ЭЦП содержатся сведения о владельце электронной подписи. В ЭДО сертификат ключа служит подтверждением того, что подтверждением того, что электронная подпись действительно принадлежит её владельцу. Информация о составе сертификата ключа и о том, какие учреждения занимаются выпуском сертификатов — в нашей статье.

Создание заявления на получение ЭП

Чтобы оформить на себя электронную подпись электронную подпись, необходимо подать специальное заявление в аккредитованный удостоверяющий центр. Мы подготовили пошаговые инструкции для юридических лиц, индивидуальных предпринимателей, а также физических лиц. С их помощью вы сможете без труда оформить заявку на получение ЭЦП в личном кабинете пользователя сервиса «Астрал-ЭТ».

Срок действия ключа электронной подписи

Максимальный срок, на который выдаётся сертификат ключа ЭП, составляет 12 месяцев. Чтобы продлить действие сертификата, владелец электронной подписи должен за 14 дней до истечения срока подать заявку на продление действия сертификата. В противном случае работа сертификата будет приостановлена, как только срок его действия истечёт. Подробнее в нашей статье.

Структура ЭЦП: из чего состоит электронная подпись

В состав электронной подписи входят ключевая пара (она состоит из ключей: открытого и закрытого), а также сертификат проверки ключей. Подробности — в нашей статье.

Что делать, если ЭЦП украли

Кража ЭП — это, безусловно, вопрос, требующий немедленного решения. Как узнать, что электронную подпись украли? Что делать в этом случае? Как предупредить возможную кражу или утерю электронной подписи? Рассказываем в нашей специальной статье.

Что такое сертификат ЭП

Для чего нужен сертификат электронной подписи? Что он представляет из себя и какие данные содержит? Рассказываем в нашей статье.

Что такое ЭЦП

Электронная подпись — это атрибут документа, составленного в электронном виде. В зависимости от своего вида ЭЦП может быть равноценной рукописной подписи, а также обеспечивать документы юридической значимостью. Подробнее в нашей статье.

Что такое штамп времени в ЭП

В момент подписания электронного документа с помощью ЭЦП формируется атрибут, который называется штамп времени. Он содержит информацию о дате и времени подписании документа. При подписании документа программа для работы с ЭЦП обращается к службе TSA (time stamping authority), которая сообщает точные дату и время, после чего формируется штамп. Рассказываем об этом здесь.

Как продлить ЭП для ЕГАИС

Для работы с ЕГАИС нужна КЭП. Поскольку срок действия любой электронной подписи ограничен, возникает закономерный вопрос: как продлить её действие? Рассказываем.

Токены ЭЦП. Обзор основных разновидностей токенов в России

Токенами называют USB-носители, предназначенные для хранения и применения ключа электронной подписи. В России сертифицировано несколько разновидностей токенов. В статье мы рассмотрим наиболее распространённые варианты ключевых носителей и расскажем, по какому принципу их выбирать.

Форум КриптоПро
 » 
Средства криптографической защиты информации
 » 
КриптоПро .NET
 » 
Ошибка ЭП-ОВ не соответствует подписанным данным: Нарушена целостность ЭП


Offline

JohnN86

 


#1
Оставлено
:

26 ноября 2020 г. 19:51:58(UTC)

JohnN86

Статус: Новичок

Группы: Участники

Зарегистрирован: 26.11.2020(UTC)
Сообщений: 1

Отправляю запрос в СМЭВ3

<soap:Envelope 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»
xmlns:smev=»urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.2″
xmlns:smev-basic=»urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.2″
xmlns:faults=»urn://x-artefacts-smev-gov-ru/services/message-exchange/types/faults/1.2″
xmlns:ds=»http://www.w3.org/2000/09/xmldsig#» xmlns:soap=»http://schemas.xmlsoap.org/soap/envelope/»>
<soap:Header>
<wsse:Security>
<ds:Signature>
<SignedInfo xmlns=»http://www.w3.org/2000/09/xmldsig#»>
<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=»#SIGNED_BY_CONSUMER»>
<Transforms>
<Transform Algorithm=»http://www.w3.org/2001/10/xml-exc-c14n#»/>
</Transforms>
<DigestMethod Algorithm=»urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256″/>
<DigestValue>aT8lwMt7SeWp6SLKVAiwfYkpR57TOUW3agI83GdGOIQ=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue xmlns=»http://www.w3.org/2000/09/xmldsig#»>
YnGlrwUMj83ogltzSR92bIEmhaX2kiHZe55GD3HRFGag8fZUQ5JxA3HLAv2ggeYpl1ktg3kIHEDSk/w1OgzdWw==
</SignatureValue>
<ds:KeyInfo>
<wsse:SecurityTokenReference>
<wsse:Reference URI=»#SenderCertificate»/>
</wsse:SecurityTokenReference>
</ds:KeyInfo>
</ds:Signature>
<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=»SenderCertificate»>
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
</wsse:BinarySecurityToken>
</wsse:Security>
</soap:Header>
<soap:Body>
<smev:GetRequestRequest>
<smev-basic:MessageTypeSelector Id=»SIGNED_BY_CONSUMER»>
<smev-basic:Timestamp>2020-11-26T18:57:33.3878613+03:00</smev-basic:Timestamp>
</smev-basic:MessageTypeSelector>
<CallerInformationSystemSignature xmlns=»urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.2″>
<Signature xmlns=»http://www.w3.org/2000/09/xmldsig#»>
<SignedInfo xmlns=»http://www.w3.org/2000/09/xmldsig#»>
<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=»#SIGNED_BY_CONSUMER»>
<Transforms>
<Transform Algorithm=»http://www.w3.org/2001/10/xml-exc-c14n#»/>
</Transforms>
<DigestMethod Algorithm=»urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256″/>
<DigestValue>aT8lwMt7SeWp6SLKVAiwfYkpR57TOUW3agI83GdGOIQ=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue xmlns=»http://www.w3.org/2000/09/xmldsig#»>
YnGlrwUMj83ogltzSR92bIEmhaX2kiHZe55GD3HRFGag8fZUQ5JxA3HLAv2ggeYpl1ktg3kIHEDSk/w1OgzdWw==
</SignatureValue>
<KeyInfo xmlns=»http://www.w3.org/2000/09/xmldsig#»>
<X509Data>
<X509Certificate>
MIIJFTCCCMCgAwIBAgIQAdYcXUEdjAAAAADCAAYAAjAMBggqhQMHAQEDAgUAMIIBmzEYMBYGA1UEAwwP0J7QkNCeICLQmNCY0KIiMXAwbgYDVQQKDGfQntGC0LrRgNGL0YLQvtC1INCQ0LrRhtC40L7QvdC10YDQvdC+0LUg0J7QsdGJ0LXRgdGC0LLQviAi0JjQvdGE0L7QotC10JrQoSDQmNC90YLQtdGA0L3QtdGCINCi0YDQsNGB0YIiMQswCQYDVQQGEwJSVTEcMBoGA1UECAwTNzcg0LMuINCc0L7RgdC60LLQsDEVMBMGA1UEBwwM0JzQvtGB0LrQstCwMSUwIwYJKoZIhvcNAQkBFhZTdXBwb3J0SUlUQGluZm90ZWNzLnJ1MW4wbAYDVQQJDGXQodGC0LDRgNGL0Lkg0J/QtdGC0YDQvtCy0YHQutC+LdCg0LDQt9GD0LzQvtCy0YHQutC40Lkg0L/RgNC+0LXQt9C0LCDQtC4gMS8yMywg0YHRgtGALiAxLCDQvtGE0LjRgSA4ODEaMBgGCCqFAwOBAwEBEgwwMDc3NDMwMjA1NjAxGDAWBgUqhQNkARINMTAyNzczOTExMzA0OTAeFw0yMDA0MjcwNjI5NDhaFw0yMTA0MjcwNjI5NDhaMIIBPjEmMCQGA1UEAwwd0JzQmNCd0JfQlNCg0JDQkiDQoNCe0KHQodCY0JgxJjAkBgNVBAoMHdCc0JjQndCX0JTQoNCQ0JIg0KDQntCh0KHQmNCYMQowCAYDVQQLDAEwMQswCQYDVQQGEwJSVTEcMBoGA1UECAwTNzcg0LMuINCc0L7RgdC60LLQsDEVMBMGA1UEBwwM0JzQvtGB0LrQstCwMSAwHgYJKoZIhvcNAQkBFhFjYUByb3NtaW56ZHJhdi5ydTFGMEQGA1UECQw90J/QtdGA0LXRg9C70L7QuiDQoNCw0YXQvNCw0L3QvtCy0YHQutC40LksINC0LiAzLzI1LCDQodCi0KAgMTEaMBgGCCqFAwOBAwEBEgwwMDc3MDc3NzgyNDYxGDAWBgUqhQNkARINMTEyNzc0NjQ2MDg5NjBmMB8GCCqFAwcBAQEBMBMGByqFAwICJAAGCCqFAwcBAQICA0MABEBh6EA3oUUbFgqL5yMc1pYMK50MCdXVaj+Rloaxq6Qbk4DPKkJqXzGwrvjksZpscIhuVdRB6wRDQN2AYTdFOLXXgQkAMDAwNjAwMDKjggUjMIIFHzAOBgNVHQ8BAf8EBAMCA/gwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMCMB0GA1UdDgQWBBS2GMTZtCddQt2VY3ygZp7/BrRdoDAnBgNVHSAEIDAeMAgGBiqFA2RxATAIBgYqhQNkcQIwCAYGKoUDZHEDMDQGBSqFA2RvBCsMKSLQmtGA0LjQv9GC0L7Qn9GA0L4gQ1NQIiDQstC10YDRgdC40Y8gNC4wMAwGA1UdEwEB/wQCMAAwggHPBgUqhQNkcASCAcQwggHADIGI0KHRgNC10LTRgdGC0LLQviDQutGA0LjQv9GC0L7Qs9GA0LDRhNC40YfQtdGB0LrQvtC5INC30LDRidC40YLRiyDQuNC90YTQvtGA0LzQsNGG0LjQuCAo0KHQmtCX0JgpIFZpUE5ldCBDU1AgNC4yICjQuNGB0L/QvtC70L3QtdC90LjQtSAzKQxt0J/RgNC+0LPRgNCw0LzQvNC90YvQuSDQutC+0LzQv9C70LXQutGBICJWaVBOZXQg0KPQtNC+0YHRgtC+0LLQtdGA0Y/RjtGJ0LjQuSDRhtC10L3RgtGAIDQgKNCy0LXRgNGB0LjRjyA0LjYpIgxe0KHQtdGA0YLQuNGE0LjQutCw0YIg0YHQvtC+0YLQstC10YLRgdGC0LLQuNGPIOKEliDQodCkLzEyNC0zNDMzINC+0YIgMDYg0LjRjtC70Y8gMjAxOCDQs9C+0LTQsAxk0KHQtdGA0YLQuNGE0LjQutCw0YIg0YHQvtC+0YLQstC10YLRgdGC0LLQuNGPIOKEliDQodCkLzExOC0zNTEwINC+0YIgMjUg0L7QutGC0Y/QsdGA0Y8gMjAxOCDQs9C+0LTQsDCBtgYIKwYBBQUHAQEEgakwgaYwLQYIKwYBBQUHMAGGIWh0dHA6Ly9jYWRlcy5paXRydXN0LnJ1Ojg3Nzcvb2NzcDA5BggrBgEFBQcwAoYtaHR0cDovL3VjMS5paXRydXN0LnJ1L3VjL0NBLUlJVC0oSzMpLTIwMjAuY2VyMDoGCCsGAQUFBzAChi5odHRwczovL3VjMS5paXRydXN0LnJ1L3VjL0NBLUlJVC0oSzMpLTIwMjAuY2VyMHMGA1UdHwRsMGowM6AxoC+GLWh0dHA6Ly91YzEuaWl0cnVzdC5ydS91Yy9DQS1JSVQtKEszKS0yMDIwLmNybDAzoDGgL4YtaHR0cDovL3VjMi5paXRydXN0LnJ1L3VjL0NBLUlJVC0oSzMpLTIwMjAuY3JsMIIBXwYDVR0jBIIBVjCCAVKAFBSMnLSK2kV4BZDqI6Ie+kqI2/CqoYIBLKSCASgwggEkMR4wHAYJKoZIhvcNAQkBFg9kaXRAbWluc3Z5YXoucnUxCzAJBgNVBAYTAlJVMRgwFgYDVQQIDA83NyDQnNC+0YHQutCy0LAxGTAXBgNVBAcMENCzLiDQnNC+0YHQutCy0LAxLjAsBgNVBAkMJdGD0LvQuNGG0LAg0KLQstC10YDRgdC60LDRjywg0LTQvtC8IDcxLDAqBgNVBAoMI9Cc0LjQvdC60L7QvNGB0LLRj9C30Ywg0KDQvtGB0YHQuNC4MRgwFgYFKoUDZAESDTEwNDc3MDIwMjY3MDExGjAYBggqhQMDgQMBARIMMDA3NzEwNDc0Mzc1MSwwKgYDVQQDDCPQnNC40L3QutC+0LzRgdCy0Y/Qt9GMINCg0L7RgdGB0LjQuIIKF/C95AAAAAADtzAMBggqhQMHAQEDAgUAA0EANxcsUXKH30PlpEO4+BLiQrctEcSle3OSekvluFm23whmoH7j4GepgHZgnLZ3P8YFiU3fOzUFCEoRrciLsHkQSg==
</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</CallerInformationSystemSignature>
</smev:GetRequestRequest>
</soap:Body>
</soap:Envelope>

Получаю ответ:

<?xml version=»1.0″ encoding=»UTF-8″ ?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV=»http://schemas.xmlsoap.org/soap/envelope/»>
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring>Signature invalid</faultstring>
<detail>
<sf2:SignatureVerificationFault
xmlns:sb2=»urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.2″
xmlns:sf2=»urn://x-artefacts-smev-gov-ru/services/message-exchange/types/faults/1.2″>
<sb2:Code>CONNECTOR</sb2:Code>
<sb2:Description>SMEV-100: ЭП-ОВ не соответствует подписанным данным: Нарушена целостность ЭП
</sb2:Description>
<sf2:SignatureVerificationFault>SignatureIsInvalid</sf2:SignatureVerificationFault>
</sf2:SignatureVerificationFault>
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>


Вверх


Offline

two_oceans

 


#2
Оставлено
:

27 ноября 2020 г. 10:53:52(UTC)

two_oceans

Статус: Эксперт

Группы: Участники

Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,598
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 389 раз в 364 постах

Автор: JohnN86 Перейти к цитате

Отправляю запрос в СМЭВ3 …. Получаю ответ:…
<sb2:Description>SMEV-100: ЭП-ОВ не соответствует подписанным данным: Нарушена целостность ЭП…

Добрый день.
Даже не знаю с чего начать… похоже применяли подписание СМЭВ2 на документе СМЭВ3? Рекомендую все же почитать методические рекомендации СМЭВ3. Для начала разберемся с формой документа и прикреплением к форуму.

1) в soap:Header подпись лишняя (нужна была в смэв 2), в смэв 3 soap:Header пуст;

2) CallerInformationSystemSignature — Signature — SignedInfo — Reference — Transforms должен содержать трансформ СМЭВ3 urn://smev-gov-ru/xmldsig/transform после эксклюзивной каноникализации http://www.w3.org/2001/10/xml-exc-c14n#

Поясню почему это нужно: приведенный Вами документ содержит форматирование переводами строк и отступы перед тегами (пробелами или табуляцией) — в реальном запросе эти символы и отступы не нужны, но при этом их обработка не особо четко регламентирована стандартами — применить стандарты не в том порядке и результат другой. Трансформ СМЭВ как раз среди прочих возможных несоответствий удаляет переводы строк и табуляцию: нет символа — нет проблемы.

3) Рекомендуется изначально удалить в документе все отступы и переводы строк перед подписанием. Ну зачем Вам нужен отступ перед значением в теге SignatureValue. На форум прикреплять тоже без дополнительного форматирования, копированием из Блокнота (любой браузер умеет отобразить XML без переводов строк в читаемом виде). Спецификация СМЭВ 3 особо подчеркивает что все содержимое SignedInfo должно быть в одну строку.

4) форум искажает документы вставленные в сам текст сообщения, а сам вид страницы форума перекашивается.
Загрузите файл на яндекс диск и приложите ссылку либо используйте кнопку вставки кода в сообщение (6 слева кнопка) как Plain text. Без этого документ искажается и проверить невозможно.
Многострочные тексты желательно убирать под спойлер (кнопка BВ/ — Спойлер), так потом удобнее тему читать.

«Вместо тысячи слов» пример ответа СМЭВ с двумя подписями (по которому я калибрую свою программу) и одновременно пример как прикреплять на форум:

UPDATE: После очистки документа из предыдущего сообщения (пункты 1 и 3) от отступов и переводов строк, обнуления soap:Header, вышло что подпись «внезапно» верна. Тем не менее без нужного трансформа СМЭВ ее скорее всего не примет. Тестовая страница не приняла.

Код:

<soap:Envelope 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" xmlns:smev="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.2" xmlns:smev-basic="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.2" xmlns:faults="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/faults/1.2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Header/><soap:Body><smev:GetRequestRequest><smev-basic:MessageTypeSelector Id="SIGNED_BY_CONSUMER"><smev-basic:Timestamp>2020-11-26T18:57:33.3878613+03:00</smev-basic:Timestamp></smev-basic:MessageTypeSelector><CallerInformationSystemSignature xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.2"><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><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="#SIGNED_BY_CONSUMER"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"/><DigestValue>aT8lwMt7SeWp6SLKVAiwfYkpR57TOUW3agI83GdGOIQ=</DigestValue></Reference></SignedInfo><SignatureValue xmlns="http://www.w3.org/2000/09/xmldsig#">YnGlrwUMj83ogltzSR92bIEmhaX2kiHZe55GD3HRFGag8fZUQ5JxA3HLAv2ggeYpl1ktg3kIHEDSk/w1OgzdWw==</SignatureValue><KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><X509Data><X509Certificate>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</X509Certificate></X509Data></KeyInfo></Signature></CallerInformationSystemSignature></smev:GetRequestRequest></soap:Body></soap:Envelope>

Отредактировано пользователем 27 ноября 2020 г. 13:53:03(UTC)
 | Причина: Не указана


Вверх

thanks 1 пользователь поблагодарил two_oceans за этот пост.

Андрей *

оставлено 27.11.2020(UTC)

Пользователи, просматривающие эту тему

Guest

Форум КриптоПро
 » 
Средства криптографической защиты информации
 » 
КриптоПро .NET
 » 
Ошибка ЭП-ОВ не соответствует подписанным данным: Нарушена целостность ЭП

Быстрый переход
 

Вы не можете создавать новые темы в этом форуме.

Вы не можете отвечать в этом форуме.

Вы не можете удалять Ваши сообщения в этом форуме.

Вы не можете редактировать Ваши сообщения в этом форуме.

Вы не можете создавать опросы в этом форуме.

Вы не можете голосовать в этом форуме.

Понравилась статья? Поделить с друзьями:
  • Ошибка проверки цифровой сигнатуры 45
  • Ошибка проверки цепочки сертификатов росреестр
  • Ошибка проверки цепочки сертификатов росприроднадзор
  • Ошибка проверки цепочки сертификатов криптопро
  • Ошибка проверки целостности файлов genshin impact