Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Corjik  
#1 Оставлено : 2 августа 2016 г. 13:03:25(UTC)
Corjik

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

Группы: Участники
Зарегистрирован: 02.08.2016(UTC)
Сообщений: 3
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Доброго дня.

Есть задача реализовать взаимодействие с СМЭВ. Для этого создано приложение на Java с использованием JCP (2.0.28830)
Получен ключевой контейнер и сертификат для тестового стенда СМЭВ. Использую эндпоинт http://smev-mvf.test.gosuslugi.ru:7777/gateway/services/SID0004151/1.00. Сообщение подписывается без ошибок, но сервис в ответ отдает: Unauthorized request

<ns0:faultCode>ESIA-005008</ns0:faultCode>
<ns0:faultString>Unauthorized request</ns0:faultString>

подскажите, возможную причину, что делаю не так, что исправить ?

Спасибо!

Листинг приложения:
============================================================
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.MimeHeaders;
import javax.xml.soap.SOAPMessage;

public class adpEsia {

public static void main(String[] args) throws Exception {

SOAPXMLSignatureManager sm = SOAPXMLSignatureManager.getInstance();

final SOAPMessage message;
FileInputStream is = new FileInputStream("c:\\identif.xml");
message = MessageFactory.newInstance().createMessage(new MimeHeaders(), is);

sm.signSOAPMessage(message);


ByteArrayOutputStream out = new ByteArrayOutputStream();
message.writeTo(out);
String strMsg = new String(out.toByteArray(), "utf-8");

System.out.println(strMsg);



}
}
====================================================
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.security.InvalidAlgorithmParameterException;
import java.security.Key;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.Provider;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.xml.crypto.KeySelector;
import javax.xml.crypto.MarshalException;
import javax.xml.crypto.XMLStructure;
import javax.xml.crypto.dsig.CanonicalizationMethod;
import javax.xml.crypto.dsig.Reference;
import javax.xml.crypto.dsig.SignedInfo;
import javax.xml.crypto.dsig.Transform;
import javax.xml.crypto.dsig.XMLSignatureException;
import javax.xml.crypto.dsig.XMLSignatureFactory;
import javax.xml.crypto.dsig.dom.DOMSignContext;
import javax.xml.crypto.dsig.dom.DOMValidateContext;
import javax.xml.crypto.dsig.keyinfo.KeyInfo;
import javax.xml.crypto.dsig.keyinfo.KeyInfoFactory;
import javax.xml.crypto.dsig.keyinfo.X509Data;
import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
import javax.xml.transform.TransformerException;
import org.apache.ws.security.WSSecurityException;
import org.apache.ws.security.message.WSSecHeader;
import org.apache.ws.security.message.token.X509Security;
import org.apache.xml.security.transforms.TransformationException;
import org.apache.xml.security.transforms.Transforms;
import org.apache.xpath.XPathAPI;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;


public class SOAPXMLSignatureManager {

private static final String PASSWORD = "1234567890";
private static final String ALIAS = "RaUser-913a59f4-cbd5-46fb-899e-325cb8030d21";

private Provider xmlDSigProvider;
private KeyStore keyStore;
private PrivateKey privateKey;
private X509Certificate cert;

private static SOAPXMLSignatureManager instance;

public static synchronized SOAPXMLSignatureManager getInstance(){
if (instance == null){
instance = new SOAPXMLSignatureManager();
}

return instance;
}

private SOAPXMLSignatureManager() {

org.apache.xml.security.Init.init();
xmlDSigProvider = new ru.CryptoPro.JCPxml.dsig.internal.dom.XMLDSigRI();

try {

keyStore = KeyStore.getInstance("HDImageStore");
keyStore.load(null, null);
privateKey = (PrivateKey)keyStore.getKey(ALIAS, PASSWORD.toCharArray());
cert = (X509Certificate)keyStore.getCertificate(ALIAS);


} catch (KeyStoreException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (CertificateException e) {
e.printStackTrace();
} catch (UnrecoverableKeyException e) {
e.printStackTrace();
}
}

public SOAPMessage signSOAPMessage(SOAPMessage message) throws SOAPException, WSSecurityException, TransformationException, NoSuchAlgorithmException,
InvalidAlgorithmParameterException, MarshalException, XMLSignatureException, TransformerException, IOException {


message.getSOAPPart().getEnvelope().addNamespaceDeclaration("ds", "http://www.w3.org/2000/09/xmldsig#");
Document doc = message.getSOAPPart().getEnvelope().getOwnerDocument();

//Добавляем заголовки для помещения информации о подписи:
WSSecHeader header = new WSSecHeader();
header.setActor("http://smev.gosuslugi.ru/actors/smev");
header.setMustUnderstand(false);
header.insertSecurityHeader(message.getSOAPPart().getEnvelope().getOwnerDocument());
// Элемент подписи.
Element token = header.getSecurityHeader();

//logger.info("token: {}", token);

// Загрузка провайдера.
Provider xmlDSigProvider = new ru.CryptoPro.JCPxml.dsig.internal.dom.XMLDSigRI();
//logger.info("xmlDSigProvider: {}", xmlDSigProvider);

//Добавляем описание преобразований над документом и узлом SignedInfo согласно методическим рекомендациям СМЭВ.
final Transforms transforms = new Transforms(doc);
transforms.addTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS);
XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM", xmlDSigProvider);

//Преобразования над узлом ds:SignedInfo:
List<Transform> transformList = new ArrayList<Transform>();
Transform transformC14N = fac.newTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS, (XMLStructure) null);
transformList.add(transformC14N);


// Ссылка на подписываемые данные с алгоритмом хеширования ГОСТ 34.11.
Reference ref = fac.newReference("#body", fac.newDigestMethod("http://www.w3.org/2001/04/xmldsig-more#gostr3411", null),
transformList, null, null);

//Задаём алгоритм подписи:
SignedInfo si = fac.newSignedInfo( fac.newCanonicalizationMethod(CanonicalizationMethod.EXCLUSIVE,
(C14NMethodParameterSpec) null), fac.newSignatureMethod("http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411", null), Collections.singletonList(ref));

//Создаём узел ds:KeyInfo с информацией о сертификате:
KeyInfoFactory kif = fac.getKeyInfoFactory();
X509Data x509d = kif.newX509Data(Collections.singletonList(cert));
KeyInfo ki = kif.newKeyInfo(Collections.singletonList(x509d));

//Подписываем данные в элементе token:
javax.xml.crypto.dsig.XMLSignature sig = fac.newXMLSignature(si, ki);
DOMSignContext signContext = new DOMSignContext((Key) privateKey, token);
sig.sign(signContext);

//Следующий этап — поместить узел ds:Signature и сертификат (X509Certificate) в узел wsse:Security,
//причём сертификат нужно удалить из ds:KeyInfo и оставить там ссылку на wsse:BinarySecurityToken с сертификатом:

// Узел подписи Signature.
Element sigE = (Element) XPathAPI.selectSingleNode(signContext.getParent(), "//ds:Signature");

// Блок данных KeyInfo.
Node keyE = XPathAPI.selectSingleNode(sigE, "//ds:KeyInfo", sigE);
// Элемент SenderCertificate, который должен содержать сертификат.
Element cerVal = (Element) XPathAPI.selectSingleNode(token, "//*[@wsu:Id='SenderCertificate']");
cerVal.setTextContent(XPathAPI.selectSingleNode(keyE, "//ds:X509Certificate", keyE).getFirstChild().getNodeValue());
// Удаляем содержимое KeyInfo
keyE.removeChild(XPathAPI.selectSingleNode(keyE, "//ds:X509Data", keyE));
// logger.info("keyE:{}" , keyE.getNodeName());
NodeList chl = keyE.getChildNodes();
for (int i = 0; i < chl.getLength(); i++) {
keyE.removeChild(chl.item(i));
}
// Узел KeyInfo содержит указание на проверку подписи с помощью сертификата SenderCertificate.
Node str = keyE.appendChild(doc.createElementNS("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "wsse:SecurityTokenReference"));
Element strRef = (Element)str.appendChild(doc.createElementNS("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "wsse:Reference"));
strRef.setAttribute("ValueType", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3");
strRef.setAttribute("URI", "#SenderCertificate");
header.getSecurityHeader().appendChild(sigE);

return message;

}
}
=============================================================================
Пример сообщения:

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" 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">
<env:Header>
<wsse:Security env:actor="http://smev.gosuslugi.ru/actors/smev">
<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">MIIHHTCCBsygAwIBAgIKWYFg5QAAAAADozAIBgYqhQMCAgMwggFGMRgwFgYFKoUDZAESDTEyMzQ1
Njc4OTAxMjMxGjAYBggqhQMDgQMBARIMMDAxMjM0NTY3ODkwMSkwJwYDVQQJDCDQodGD0YnQtdCy
0YHQutC40Lkg0LLQsNC7INC0LiAyNjEXMBUGCSqGSIb3DQEJARYIY2FAcnQucnUxCzAJBgNVBAYT
AlJVMRgwFgYDVQQIDA83NyDQnNC+0YHQutCy0LAxFTATBgNVBAcMDNCc0L7RgdC60LLQsDEkMCIG
A1UECgwb0J7QkNCeINCg0L7RgdGC0LXQu9C10LrQvtC8MTAwLgYDVQQLDCfQo9C00L7RgdGC0L7Q
stC10YDRj9GO0YnQuNC5INGG0LXQvdGC0YAxNDAyBgNVBAMMK9Ci0LXRgdGC0L7QstGL0Lkg0KPQ
piDQoNCi0JogKNCg0KLQm9Cw0LHRgSkwHhcNMTYwODAxMDczNDAwWhcNMTcwODAxMDc0NDAwWjCB
zDEYMBYGBSqFA2QBEg0xMDIzMjAwMDAwMDEwMRowGAYIKoUDA4EDAQESDDAwMzIzMjAwNTQ4NDEh
MB8GA1UECB4YADcANwAgBDMALgAgBBwEPgRBBDoEMgQwMRUwEwYDVQQHHgwEHAQ+BEEEOgQyBDAx
KTAnBgNVBAoeIAQfBBAEHgAgAKsEHwQ+BEcEQgQwACAEEQQwBD0EOgC7MS8wLQYDVQQDHiYEKAQ7
BE4ENwAgBCEEHAQtBBIAIAQbBDUEQgQ+ACAEEQQwBD0EOjBjMBwGBiqFAwICEzASBgcqhQMCAiQA
BgcqhQMCAh4BA0MABEBwWziHMU+6IFR/t6rPVzhOf24C2BXDPeEgRHf2s5QUpuLf5ouArqGwgZYU
OrZPOPjcMmxb8S5MX4D296pKuOR3o4IEDzCCBAswDgYDVR0PAQH/BAQDAgTwMCYGA1UdJQQfMB0G
CCsGAQUFBwMEBgcqhQMCAiIGBggrBgEFBQcDAjAdBgNVHQ4EFgQUvZAEKBW+FLuh2rums/HK/8hl
7wMwggGHBgNVHSMEggF+MIIBeoAUQbLMMpw4fy39jIYVWCNiCnf1LP+hggFOpIIBSjCCAUYxGDAW
BgUqhQNkARINMTIzNDU2Nzg5MDEyMzEaMBgGCCqFAwOBAwEBEgwwMDEyMzQ1Njc4OTAxKTAnBgNV
BAkMINCh0YPRidC10LLRgdC60LjQuSDQstCw0Lsg0LQuIDI2MRcwFQYJKoZIhvcNAQkBFghjYUBy
dC5ydTELMAkGA1UEBhMCUlUxGDAWBgNVBAgMDzc3INCc0L7RgdC60LLQsDEVMBMGA1UEBwwM0JzQ
vtGB0LrQstCwMSQwIgYDVQQKDBvQntCQ0J4g0KDQvtGB0YLQtdC70LXQutC+0LwxMDAuBgNVBAsM
J9Cj0LTQvtGB0YLQvtCy0LXRgNGP0Y7RidC40Lkg0YbQtdC90YLRgDE0MDIGA1UEAwwr0KLQtdGB
0YLQvtCy0YvQuSDQo9CmINCg0KLQmiAo0KDQotCb0LDQsdGBKYIQA67MaJpOeLRCL2VS7gU/gzBo
BgNVHR8EYTBfMF2gW6BZhldodHRwOi8vY2VydGVucm9sbC50ZXN0Lmdvc3VzbHVnaS5ydS9yYS9j
ZHAvNDFiMmNjMzI5YzM4N2YyZGZkOGM4NjE1NTgyMzYyMGE3N2Y1MmNmZi5jcmwwWQYIKwYBBQUH
AQEETTBLMEkGCCsGAQUFBzAChj1odHRwOi8vY2VydGVucm9sbC50ZXN0Lmdvc3VzbHVnaS5ydS9y
YS9jZHAvdGVzdF9jYV9ydGxhYnMuY2VyMDYGBSqFA2RvBC0MKyLQmtGA0LjQv9GC0L7Qn9GA0L4g
Q1NQIiAo0LLQtdGA0YHQuNGPIDMuNikwKwYDVR0QBCQwIoAPMjAxNjA4MDEwNzM0MDBagQ8yMDE3
MDgwMTA3MzQwMFowHQYDVR0gBBYwFDAIBgYqhQNkcQEwCAYGKoUDZHECMIHdBgUqhQNkcASB0zCB
0AwrItCa0YDQuNC/0YLQvtCf0YDQviBDU1AiICjQstC10YDRgdC40Y8gMy42KQxTItCj0LTQvtGB
0YLQvtCy0LXRgNGP0Y7RidC40Lkg0YbQtdC90YLRgCAi0JrRgNC40L/RgtC+0J/RgNC+INCj0KYi
INCy0LXRgNGB0LjQuCAxLjUMJeKEliDQodCkLzEyNC0yMjM4INC+0YIgMDQuMTAuMjAxMyDQsy4M
JeKEliDQodCkLzEyOC0yMzUyINC+0YIgMTUuMDQuMjAxNCDQsy4wCAYGKoUDAgIDA0EArPX8VrSj
LyOvtxN+zNTZJ2s4FkkwBuEHT2QtY849lKqKtckLgA06BmUDajj5zNYuUrdwTJbRjTTASC4eSpds
Pg==</wsse:BinarySecurityToken>
<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="#body">
<Transforms>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
<DigestValue>OvgEYNMg1H3z75NGvdD1k+d+GElue9dum9Tp8BSMCWU=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>V8/pRo1i+zhB3P3nKHJ81lOA1iHHQZGZqNfcmpTX3l8WrRYsENZ7/P1M5/wIYrDMVwCd1vvO9bql
yfqk2RjI5g==</SignatureValue>
<KeyInfo>
<wsse:SecurityTokenReference>
<wsse:Reference URI="#SenderCertificate" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/>
</wsse:SecurityTokenReference>
</KeyInfo>
</Signature>
</wsse:Security>
</env:Header>
<env:Body wsu:Id="body">
<esia:Identification xmlns:esia="http://mks.esia.rstyle.ru/" xmlns="http://smev.gosuslugi.ru/rev120315">
<Message>
<Sender>
<Code>TEST00001</Code>
<Name>Шлюз СМЭВ</Name>
</Sender>
<Recipient>
<Code>ISIA01001</Code>
<Name>Electronic system identification and authentication</Name>
</Recipient>
<Originator>
<Code>TEST00001</Code>
<Name>Шлюз СМЭВ</Name>
</Originator>
<Service>
<Mnemonic>ESIARegister</Mnemonic>
<Version>1.00</Version>
</Service>
<TypeCode>OTHR</TypeCode>
<Status>REQUEST</Status>
<Date>2016-08-02T10:37:05.059+03:00</Date>
<ExchangeType>0</ExchangeType>
<CaseNumber>Test</CaseNumber>
</Message>
<MessageData>
<AppData>
<esia:passportSeries>1111</esia:passportSeries>
<esia:passportNumber>111111</esia:passportNumber>
<esia:firstname>XXXXX</esia:firstname>
<esia:lastname>XXXXXXX</esia:lastname>
<esia:middlename>XXXXXXX</esia:middlename>
<esia:mobile>+1(111)1111111</esia:mobile>
<esia:snils>111-111-111 11</esia:snils>
<esia:inn>111111111111</esia:inn>
</AppData>
</MessageData>
</esia:Identification>
</env:Body>
</env:Envelope>
==============================================================================

Отредактировано пользователем 2 августа 2016 г. 13:33:32(UTC)  | Причина: Не указана

Online Евгений Афанасьев  
#2 Оставлено : 2 августа 2016 г. 14:03:06(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 714 раз в 674 постах
Здравствуйте.
Автор: Corjik Перейти к цитате
&lt;ns0:faultCode&gt;ESIA-005008&lt;/ns0:faultCode&gt;
&lt;ns0:faultString&gt;Unauthorized request&lt;/ns0:faultString&gt;

Как в СМЭВ комментируют эту ошибку?

Offline Corjik  
#3 Оставлено : 2 августа 2016 г. 14:28:21(UTC)
Corjik

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

Группы: Участники
Зарегистрирован: 02.08.2016(UTC)
Сообщений: 3
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 1 раз
Автор: afev Перейти к цитате
Здравствуйте.
Автор: Corjik Перейти к цитате
&lt;ns0:faultCode&gt;ESIA-005008&lt;/ns0:faultCode&gt;
&lt;ns0:faultString&gt;Unauthorized request&lt;/ns0:faultString&gt;

Как в СМЭВ комментируют эту ошибку?



Пока никак, зарегистрировал инцидент. Жду ответа.
Offline t1nk  
#4 Оставлено : 29 августа 2016 г. 12:39:07(UTC)
t1nk

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

Группы: Участники
Зарегистрирован: 25.08.2016(UTC)
Сообщений: 17
Российская Федерация
Откуда: Белгород

Сказал(а) «Спасибо»: 7 раз
Взял ваш код и попытался выполнить его на следующей XML (взята из примеров, удалена подпись):

Код:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" xmlns:ns1="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.1">
   <soapenv:Header/>
   <soapenv:Body>
		      <ns:GetRequestRequest>
		         <ns2:MessageTypeSelector xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.1" xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" Id="SIGNED_BY_CALLER"><ns2:NamespaceURI>urn://x-artefacts-gibdd-gov-ru/breach/root/1.0</ns2:NamespaceURI><ns2:RootElementLocalName>BreachRequest</ns2:RootElementLocalName><ns2:Timestamp>2014-02-11T17:10:03.616+04:00</ns2:Timestamp></ns2:MessageTypeSelector>
		      </ns:GetRequestRequest>
   </soapenv:Body>
</soapenv:Envelope>


Но на строке
Код:
sig.sign(signContext);


Выдает ошибку:
Код:
Building TestSignedXml 1.0.0
------------------------------------------------------------------------

--- exec-maven-plugin:1.2.1:exec (default-cli) @ TestSignedXml ---
авг 29, 2016 1:14:47 PM ru.CryptoPro.JCP.tools.Starter check
INFO: Loading JCP 1.0.54 36641
авг 29, 2016 1:14:48 PM ru.CryptoPro.JCP.tools.Starter check
INFO: JCP loaded.
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.xml.security.utils.resolver.ResourceResolver.getInstance(Lorg/w3c/dom/Attr;Ljava/lang/String;Z)Lorg/apache/xml/security/utils/resolver/ResourceResolver;
	at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMURIDereferencer.dereference(DOMURIDereferencer.java:95)
	at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMReference.dereference(DOMReference.java:395)
	at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMReference.digest(DOMReference.java:329)
	at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMXMLSignature.digestReference(DOMXMLSignature.java:453)
	at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMXMLSignature.sign(DOMXMLSignature.java:352)
	at ru.com.testsignedxml.SOAPXMLSignatureManager.signSOAPMessage(SOAPXMLSignatureManager.java:146)
	at ru.com.testsignedxml.Main.<init>(Main.java:127)
	at ru.com.testsignedxml.Main.main(Main.java:30)


Подпись этим же ключом генерируется утилитой signertool.

Подскажите, что я упустил?

PS
Проект создал в NetBeans 8.1, с JDK 1.7.0_21.
В зависимостях есть client-3.4.23.0 (smev-client).
Установлена CryptoProJCP v2.06.00.0013 -> jcp_plus_jtls_1.0.54 и test_jcp_wss4j1_6.

PS2
Видел тема JCP + WebLogic 10.3.6.0 формирование подписи сообщения, где обсуждалась похожая проблема, но что нужно сделать не совсем понял... что в батнике то должно быть ?

PS3
При запуске из командной строки выдает ошибку:
Код:
C:\projects\Java\NetBeans\TestSignedXml\target>java -cp TestSignedXml-1.0.0.jar ru.com.testsignedxml.Main
рту 29, 2016 3:18:30 PM ru.CryptoPro.JCP.tools.Starter check
INFO: Loading JCP 1.0.54 36641
рту 29, 2016 3:18:30 PM ru.CryptoPro.JCP.tools.Starter check
INFO: JCP loaded.
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/ws/security/message/WSSecHeader
        at ru.com.testsignedxml.SOAPXMLSignatureManager.signSOAPMessage(SOAPXMLSignatureManager.java:112)
        at ru.com.testsignedxml.Main.<init>(Main.java:127)
        at ru.com.testsignedxml.Main.main(Main.java:30)
Caused by: java.lang.ClassNotFoundException: org.apache.ws.security.message.WSSecHeader
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
        ... 3 more

C:\projects\Java\NetBeans\TestSignedXml\target>


PS4
Тему NoSuchMethodError в примере test_jcp_wss4j1_6 то же читал - я изначально ставил версию xmlsec-1.4.5
(без неё crypto не работает, а пересобрать его так, что бы он подтянулся в smev-client или хотя бы в моем проекте у меня не получается)...
Вот зависимости моего проекта, которые подтянулись NetBeans автоматически - на скриншоте, а прописанные изначально мной в pom.xml - в листинге:
Код:
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
        <log4j.version>1.2.17</log4j.version>
        <crypto.version>1.2</crypto.version>
        <smev.client.version>3.4.23.0</smev.client.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <!-- API и базовая часть -->
            <dependency>
                <groupId>ru.voskhod.smev.client</groupId>
                <artifactId>commons</artifactId>
                <version>${smev.client.version}</version>
            </dependency>
            <dependency>
                <groupId>ru.voskhod.smev.client</groupId>
                <artifactId>factory</artifactId>
                <version>${smev.client.version}</version>
            </dependency>
            <dependency>
                <groupId>ru.voskhod.smev.client</groupId>
                <artifactId>identification</artifactId>
                <version>${smev.client.version}</version>
            </dependency>
            <dependency>
                <groupId>ru.voskhod.smev.client</groupId>
                <artifactId>identitytool</artifactId>
                <version>${smev.client.version}</version>
            </dependency>
            <dependency>
                <groupId>ru.voskhod.smev.client</groupId>
                <artifactId>adminserv</artifactId>
                <version>${smev.client.version}</version>
            </dependency>
            <dependency>
                <groupId>ru.voskhod.smev.client</groupId>
                <artifactId>adminservtool</artifactId>
                <version>${smev.client.version}</version>
            </dependency>
            <dependency>
                <groupId>ru.voskhod.smev.client</groupId>
                <artifactId>message</artifactId>
                <version>${smev.client.version}</version>
            </dependency>
            <dependency>
                <groupId>ru.voskhod.smev.client</groupId>
                <artifactId>messagetool</artifactId>
                <version>${smev.client.version}</version>
            </dependency>
            <dependency>
                <groupId>ru.voskhod.smev.client</groupId>
                <artifactId>poll</artifactId>
                <version>${smev.client.version}</version>
            </dependency>
            <dependency>
                <groupId>ru.voskhod.smev.client</groupId>
                <artifactId>server-api</artifactId>
                <version>${smev.client.version}</version>
            </dependency>
            <dependency>
                <groupId>ru.voskhod.smev.client</groupId>
                <artifactId>signature</artifactId>
                <version>${smev.client.version}</version>
            </dependency>
            <dependency>
                <groupId>ru.voskhod.smev.client</groupId>
                <artifactId>signertool</artifactId>
                <version>${smev.client.version}</version>
            </dependency>
            <dependency>
                <groupId>ru.voskhod.smev.client</groupId>
                <artifactId>template</artifactId>
                <version>${smev.client.version}</version>
            </dependency>
            <dependency>
                <groupId>ru.voskhod.smev.client</groupId>
                <artifactId>transaction</artifactId>
                <version>${smev.client.version}</version>
            </dependency>
            <dependency>
                <groupId>ru.voskhod.smev.client</groupId>
                <artifactId>adminserv</artifactId>
                <version>${smev.client.version}</version>
            </dependency>
            <!-- Реализация API -->
            <dependency>
                <groupId>ru.voskhod.smev.client</groupId>
                <artifactId>transactiontool</artifactId>
                <version>${smev.client.version}</version>
            </dependency>
            <dependency>
                <groupId>ru.voskhod.smev.client</groupId>
                <artifactId>transport</artifactId>
                <version>${smev.client.version}</version>
            </dependency>
            <dependency>
                <groupId>ru.voskhod.smev.client</groupId>
                <artifactId>util</artifactId>
                <version>${smev.client.version}</version>
            </dependency>
            <dependency>
                <groupId>ru.voskhod.smev.client</groupId>
                <artifactId>validation</artifactId>
                <version>${smev.client.version}</version>
            </dependency>
            <dependency>
                <groupId>ru.voskhod.smev.client</groupId>
                <artifactId>smev-push-service</artifactId>
                <version>${smev.client.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId> Screenshot_9.png (51kb) загружен 36 раз(а).
            <version>${log4j.version}</version>
        </dependency>
        <dependency>
            <groupId>ru.voskhod.crypto</groupId>
            <artifactId>crypto</artifactId>
            <version>${crypto.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.ws.security</groupId>
            <artifactId>wss4j</artifactId>
            <version>1.6.19</version>
            <type>jar</type>
        </dependency>
    </dependencies>

Screenshot_9.png (51kb) загружен 36 раз(а).

PS5
Несколько раз пробовал создавать проект с нуля - ничего не меняется.

Отредактировано пользователем 30 августа 2016 г. 9:50:23(UTC)  | Причина: уточнение

Offline t1nk  
#5 Оставлено : 30 августа 2016 г. 11:08:52(UTC)
t1nk

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

Группы: Участники
Зарегистрирован: 25.08.2016(UTC)
Сообщений: 17
Российская Федерация
Откуда: Белгород

Сказал(а) «Спасибо»: 7 раз
Создал проект на чистой машине без лишних зависимостей, заново установив КриптоПро и Рутокен.

Установлено:

  • jdk-7u21-windows-x64.exe
  • jcp-2.0.38830.zip
  • rtSup_CryptoProJCP.v.2.06.00.0013.exe
  • xalan-2.7.0.jar


При запуске проекта в NetBeans ошибка поменялась на:
Цитата:

NetBeans: JPDA Listening Start...
JPDA Address: pc-test:61494
Port:61494
cd C:\projects\Java\NetBeans\TestSignedXml_jcp2; "JAVA_HOME=C:\\Program Files\\Java\\jdk1.7.0_21" cmd /c "\"\"C:\\Program Files\\NetBeans 8.1\\java\\maven\\bin\\mvn.bat\" -Dexec.args=\"-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=61494 -classpath %classpath ru.com.testsignedxml_jcp2.Main\" -Dexec.executable=\"C:\\Program Files\\Java\\jdk1.7.0_21\\bin\\java.exe\" -Djpda.listen=true -Djpda.address=61494 -Dmaven.ext.class.path=\"C:\\Program Files\\NetBeans 8.1\\java\\maven-nblib\\netbeans-eventspy.jar\" -Dfile.encoding=UTF-8 org.codehaus.mojo:exec-maven-plugin:1.2.1:exec\""
Running NetBeans Compile On Save execution. Phase execution is skipped and output directories of dependency projects (with Compile on Save turned on) will be used instead of their jar artifacts.
Scanning for projects...


Building TestSignedXml_jcp2 1.0.0


--- exec-maven-plugin:1.2.1:exec (default-cli) @ TestSignedXml_jcp2 ---
авг 30, 2016 11:37:14 AM ru.CryptoPro.JCP.tools.Starter check
INFO: Loading JCP 2.0 38830
авг 30, 2016 11:37:14 AM ru.CryptoPro.JCP.tools.Starter check
INFO: JCP loaded.
Key: cpstestcont
Key: Responder
Key: Sender
авг 30, 2016 11:37:14 AM ru.com.testsignedxml_jcp2.Main main
SEVERE: null
javax.xml.crypto.dsig.XMLSignatureException: javax.xml.crypto.URIReferenceException: org.apache.xml.security.utils.resolver.ResourceResolverException: Cannot resolve element with ID body
at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMReference.dereference(DOMReference.java:402)
at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMReference.digest(DOMReference.java:330)
at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMXMLSignature.digestReference(DOMXMLSignature.java:450)
at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMXMLSignature.sign(DOMXMLSignature.java:349)
at ru.com.testsignedxml_jcp2.SOAPXMLSignatureManager.signSOAPMessage(SOAPXMLSignatureManager.java:151)
at ru.com.testsignedxml_jcp2.Main.<init>(Main.java:48)
at ru.com.testsignedxml_jcp2.Main.main(Main.java:30)
Caused by: javax.xml.crypto.URIReferenceException: org.apache.xml.security.utils.resolver.ResourceResolverException: Cannot resolve element with ID body
at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMURIDereferencer.dereference(DOMURIDereferencer.java:104)
at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMReference.dereference(DOMReference.java:396)
... 6 more
Caused by: org.apache.xml.security.utils.resolver.ResourceResolverException: Cannot resolve element with ID body
at org.apache.xml.security.utils.resolver.implementations.ResolverFragment.engineResolve(ResolverFragment.java:86)
at org.apache.xml.security.utils.resolver.ResourceResolver.resolve(ResourceResolver.java:279)
at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMURIDereferencer.dereference(DOMURIDereferencer.java:97)
... 7 more
javax.xml.crypto.URIReferenceException: org.apache.xml.security.utils.resolver.ResourceResolverException: Cannot resolve element with ID body
at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMURIDereferencer.dereference(DOMURIDereferencer.java:104)
at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMReference.dereference(DOMReference.java:396)
at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMReference.digest(DOMReference.java:330)
at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMXMLSignature.digestReference(DOMXMLSignature.java:450)
at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMXMLSignature.sign(DOMXMLSignature.java:349)
at ru.com.testsignedxml_jcp2.SOAPXMLSignatureManager.signSOAPMessage(SOAPXMLSignatureManager.java:151)
at ru.com.testsignedxml_jcp2.Main.<init>(Main.java:48)
at ru.com.testsignedxml_jcp2.Main.main(Main.java:30)
Caused by: org.apache.xml.security.utils.resolver.ResourceResolverException: Cannot resolve element with ID body
at org.apache.xml.security.utils.resolver.implementations.ResolverFragment.engineResolve(ResolverFragment.java:86)
at org.apache.xml.security.utils.resolver.ResourceResolver.resolve(ResourceResolver.java:279)
at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMURIDereferencer.dereference(DOMURIDereferencer.java:97)
... 7 more


BUILD SUCCESS

Total time: 2.973s
Finished at: Tue Aug 30 11:37:14 MSK 2016
Final Memory: 7M/231M



Возможно нужно выполнить какие-то ещё настройки ?

Прилагаю созданный проект:
TestSignedXml_jcp2.zip (21kb) загружен 6 раз(а).
Screenshot_10.png (167kb) загружен 55 раз(а).

Отредактировано пользователем 30 августа 2016 г. 11:11:40(UTC)  | Причина: добавлен скриншот зависимостей

Online Евгений Афанасьев  
#6 Оставлено : 30 августа 2016 г. 11:47:52(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 714 раз в 674 постах
Здравствуйте.
В коде выполняется:
Код:

if (!XmlInit.isInitialized()) {
 XmlInit.init();
}

?
JCPxml и XMLDSigRI зависят от xmlsec-1.5.0.
С jcp 2.0 можно использовать jre более новой версии.

Отредактировано пользователем 30 августа 2016 г. 11:48:43(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
t1nk оставлено 31.08.2016(UTC)
Offline t1nk  
#7 Оставлено : 30 августа 2016 г. 12:35:04(UTC)
t1nk

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

Группы: Участники
Зарегистрирован: 25.08.2016(UTC)
Сообщений: 17
Российская Федерация
Откуда: Белгород

Сказал(а) «Спасибо»: 7 раз
Добавил код
Код:
if (!XmlInit.isInitialized()) {
  XmlInit.init();
}

в функцию main перед строкой SOAPXMLSignatureManager sm = SOAPXMLSignatureManager.getInstance();
выполняется, ошибка та же (Screenshot_12.png).
Screenshot_12.png (258kb) загружен 43 раз(а).


В зависимостях проекта прописан xmlsec-1.5.0 (Screenshot_12.png), он же лежит в "c:\Program Files\Java\jdk1.7.0_21\jre\lib\ext\" (Screenshot_11.png)
Screenshot_11.png (107kb) загружен 79 раз(а).


При запуске в консоли, ошибка та же (Screenshot_13.png).
Screenshot_13.png (117kb) загружен 87 раз(а).


JCP 2.0.38830 вроде бы устанавливается корректно (Screenshot_14.png).
Screenshot_14.png (176kb) загружен 101 раз(а).


Текст тестовой XML:
Код:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" xmlns:ns1="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.1">
   <soapenv:Header/>
   <soapenv:Body>
		      <ns:GetRequestRequest>
		         <ns2:MessageTypeSelector xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.1" xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" Id="SIGNED_BY_CALLER"><ns2:NamespaceURI>urn://x-artefacts-gibdd-gov-ru/breach/root/1.0</ns2:NamespaceURI><ns2:RootElementLocalName>BreachRequest</ns2:RootElementLocalName><ns2:Timestamp>2014-02-11T17:10:03.616+04:00</ns2:Timestamp></ns2:MessageTypeSelector>
		      </ns:GetRequestRequest>
   </soapenv:Body>
</soapenv:Envelope>


PS
Прошлую ошибку запуска в консоли устранил помещением wss4j-1.6.3.jar в "c:\Program Files\Java\jdk1.7.0_21\jre\lib\ext\" (Screenshot_11.png).

PS2
Пробовал на на XML автора топика (убрав подпись из неё):
Код:
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" 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">
    <env:Header>
    </env:Header>
    <env:Body wsu:Id="body">
        <esia:Identification xmlns:esia="http://mks.esia.rstyle.ru/" xmlns="http://smev.gosuslugi.ru/rev120315">
            <Message>
                <Sender>
                    <Code>TEST00001</Code>
                    <Name>Шлюз СМЭВ</Name>
                </Sender>
                <Recipient>
                    <Code>ISIA01001</Code>
                    <Name>Electronic system identification and authentication</Name>
                </Recipient>
                <Originator>
                    <Code>TEST00001</Code>
                    <Name>Шлюз СМЭВ</Name>
                </Originator>
                <Service>
                    <Mnemonic>ESIARegister</Mnemonic>
                    <Version>1.00</Version>
                </Service>
                <TypeCode>OTHR</TypeCode>
                <Status>REQUEST</Status>
                <Date>2016-08-02T10:37:05.059+03:00</Date>
                <ExchangeType>0</ExchangeType>
                <CaseNumber>Test</CaseNumber>
            </Message>
            <MessageData>
                <AppData>
                    <esia:passportSeries>1111</esia:passportSeries>
                    <esia:passportNumber>111111</esia:passportNumber>
                    <esia:firstname>XXXXX</esia:firstname>
                    <esia:lastname>XXXXXXX</esia:lastname>
                    <esia:middlename>XXXXXXX</esia:middlename>
                    <esia:mobile>+1(111)1111111</esia:mobile>
                    <esia:snils>111-111-111 11</esia:snils>
                    <esia:inn>111111111111</esia:inn>
                </AppData>
            </MessageData>
        </esia:Identification>
    </env:Body>
</env:Envelope>

Ошибка:
Цитата:
Building TestSignedXml_jcp2 1.0.0


--- exec-maven-plugin:1.2.1:exec (default-cli) @ TestSignedXml_jcp2 ---
авг 30, 2016 2:02:21 PM ru.CryptoPro.JCP.tools.Starter check
INFO: Loading JCP 2.0 38830
авг 30, 2016 2:02:21 PM ru.CryptoPro.JCP.tools.Starter check
INFO: JCP loaded.
Key: cpstestcont
Key: Responder
Key: Sender
авг 30, 2016 2:02:22 PM ru.com.testsignedxml_jcp2.Main main
SEVERE: null
java.lang.NullPointerException
at ru.com.testsignedxml_jcp2.SOAPXMLSignatureManager.signSOAPMessage(SOAPXMLSignatureManager.java:162)
at ru.com.testsignedxml_jcp2.Main.<init>(Main.java:54)
at ru.com.testsignedxml_jcp2.Main.main(Main.java:31)


BUILD FAILURE

Total time: 3.056s
Finished at: Tue Aug 30 14:02:22 MSK 2016
Final Memory: 7M/231M

В этом случае проблемная строка:
Код:
cerVal.setTextContent( XPathAPI.selectSingleNode( keyE, "//ds:X509Certificate", keyE ).getFirstChild().getNodeValue() );

Отредактировано пользователем 30 августа 2016 г. 13:15:35(UTC)  | Причина: добавлено PS; добавлено PS2

Online Евгений Афанасьев  
#8 Оставлено : 30 августа 2016 г. 13:35:45(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 714 раз в 674 постах
Похоже на http://bugs.java.com/bug...ew_bug.do?bug_id=8017171
Но говорится:
CUSTOMER SUBMITTED WORKAROUND :
Downgrade to java 1.7.0_21

А если попробовать задать wsu:Id как id?

Отредактировано пользователем 30 августа 2016 г. 13:38:06(UTC)  | Причина: Не указана

Offline t1nk  
#9 Оставлено : 30 августа 2016 г. 14:24:52(UTC)
t1nk

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

Группы: Участники
Зарегистрирован: 25.08.2016(UTC)
Сообщений: 17
Российская Федерация
Откуда: Белгород

Сказал(а) «Спасибо»: 7 раз
При этих способах задания:
Код:

<env:Body wsu:Id="body">
<env:Body wsu:id="body">
<env:Body id="body">

Ошибка одна и та же:
Код:
java.lang.NullPointerException
	at ru.com.testsignedxml_jcp2.SOAPXMLSignatureManager.signSOAPMessage(SOAPXMLSignatureManager.java:162)
	at ru.com.testsignedxml_jcp2.Main.<init>(Main.java:54)
	at ru.com.testsignedxml_jcp2.Main.main(Main.java:31)

А если совсем убрать:
Код:
javax.xml.crypto.dsig.XMLSignatureException: javax.xml.crypto.URIReferenceException: org.apache.xml.security.utils.resolver.ResourceResolverException: Cannot resolve element with ID body
	at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMReference.dereference(DOMReference.java:402)
	at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMReference.digest(DOMReference.java:330)
	at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMXMLSignature.digestReference(DOMXMLSignature.java:450)
	at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMXMLSignature.sign(DOMXMLSignature.java:349)
	at ru.com.testsignedxml_jcp2.SOAPXMLSignatureManager.signSOAPMessage(SOAPXMLSignatureManager.java:151)
	at ru.com.testsignedxml_jcp2.Main.<init>(Main.java:54)
	at ru.com.testsignedxml_jcp2.Main.main(Main.java:31)
Caused by: javax.xml.crypto.URIReferenceException: org.apache.xml.security.utils.resolver.ResourceResolverException: Cannot resolve element with ID body
	at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMURIDereferencer.dereference(DOMURIDereferencer.java:104)
	at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMReference.dereference(DOMReference.java:396)
	... 6 more
Caused by: org.apache.xml.security.utils.resolver.ResourceResolverException: Cannot resolve element with ID body
	at ru.CryptoPro.JCPxml.utility.DocumentIdResolver.engineResolve(Unknown Source)
	at org.apache.xml.security.utils.resolver.ResourceResolver.resolve(ResourceResolver.java:279)
	at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMURIDereferencer.dereference(DOMURIDereferencer.java:97)
	... 7 more
javax.xml.crypto.URIReferenceException: org.apache.xml.security.utils.resolver.ResourceResolverException: Cannot resolve element with ID body
	at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMURIDereferencer.dereference(DOMURIDereferencer.java:104)
	at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMReference.dereference(DOMReference.java:396)
	at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMReference.digest(DOMReference.java:330)
	at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMXMLSignature.digestReference(DOMXMLSignature.java:450)
	at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMXMLSignature.sign(DOMXMLSignature.java:349)
	at ru.com.testsignedxml_jcp2.SOAPXMLSignatureManager.signSOAPMessage(SOAPXMLSignatureManager.java:151)
	at ru.com.testsignedxml_jcp2.Main.<init>(Main.java:54)
	at ru.com.testsignedxml_jcp2.Main.main(Main.java:31)
Caused by: org.apache.xml.security.utils.resolver.ResourceResolverException: Cannot resolve element with ID body
	at ru.CryptoPro.JCPxml.utility.DocumentIdResolver.engineResolve(Unknown Source)
	at org.apache.xml.security.utils.resolver.ResourceResolver.resolve(ResourceResolver.java:279)
	at ru.CryptoPro.JCPxml.dsig.internal.dom.DOMURIDereferencer.dereference(DOMURIDereferencer.java:97)
	... 7 more


PS
На проблемной строке наблюдаю следующее
Screenshot_16.png (63kb) загружен 83 раз(а).

Получается что код (так же описанный в примере "Подпись сообщений SOAP для СМЭВ с использованием КриптоПро JCP")
Код:

WSSecHeader header = new WSSecHeader();
header.setActor("http://smev.gosuslugi.ru/actors/smev");
header.setMustUnderstand(false);
header.insertSecurityHeader(message.getSOAPPart().getEnvelope().getOwnerDocument());
// Элемент подписи.
Element token = header.getSecurityHeader();

генерит токен не в той форме что ожидается, если я правильно понимаю...

В чем может быть проблема, если допустить что код рабочий (судя по первому топику темы) ?

PS2
Рутокен на скрине просто проверял на доступность.

PS3
Автор: afev Перейти к цитате
Похоже на http://bugs.java.com/bug...ew_bug.do?bug_id=8017171
Но говорится:
CUSTOMER SUBMITTED WORKAROUND :
Downgrade to java 1.7.0_21

И так использую именно Java 1.7.0 update 21.

Автор: afev Перейти к цитате
JCPxml и XMLDSigRI зависят от xmlsec-1.5.0.
С jcp 2.0 можно использовать jre более новой версии.


Какую версию JDK вы рекомендуете для JCP 2.0.38830 ?

Отредактировано пользователем 30 августа 2016 г. 15:29:53(UTC)  | Причина: форматирование текста ошибок + PS + PS2 + PS3

Offline t1nk  
#10 Оставлено : 31 августа 2016 г. 11:35:35(UTC)
t1nk

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

Группы: Участники
Зарегистрирован: 25.08.2016(UTC)
Сообщений: 17
Российская Федерация
Откуда: Белгород

Сказал(а) «Спасибо»: 7 раз
Если закомментировать указанную строку, то код действительно отрабатывает, выдавая следующею XML
Код:
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" 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">
    <env:Header><wsse:Security env:actor="http://smev.gosuslugi.ru/actors/smev" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><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="#body"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/><DigestValue>+51PVQuDCu8rTb38PR/grIm0Z76Sh87T7JTbbPETkgU=</DigestValue></Reference></SignedInfo><SignatureValue>m9m9jQ7wqqEy/uGTPUYbaG1PpfbtpKRvN2fwwJ7c4pB5UEXd2FJbbdBCvNuQYJtgu2t90nK9sE17
ar5atSxECA==</SignatureValue><KeyInfo><wsse:SecurityTokenReference><wsse:Reference URI="#SenderCertificate" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/></wsse:SecurityTokenReference></KeyInfo></Signature></wsse:Security>
    </env:Header>
    <env:Body wsu:id="body">
        <esia:Identification xmlns:esia="http://mks.esia.rstyle.ru/" xmlns="http://smev.gosuslugi.ru/rev120315">
            <Message>
                <Sender>
                    <Code>TEST00001</Code>
                    <Name>Шлюз СМЭВ</Name>
                </Sender>
                <Recipient>
                    <Code>ISIA01001</Code>
                    <Name>Electronic system identification and authentication</Name>
                </Recipient>
                <Originator>
                    <Code>TEST00001</Code>
                    <Name>Шлюз СМЭВ</Name>
                </Originator>
                <Service>
                    <Mnemonic>ESIARegister</Mnemonic>
                    <Version>1.00</Version>
                </Service>
                <TypeCode>OTHR</TypeCode>
                <Status>REQUEST</Status>
                <Date>2016-08-02T10:37:05.059+03:00</Date>
                <ExchangeType>0</ExchangeType>
                <CaseNumber>Test</CaseNumber>
            </Message>
            <MessageData>
                <AppData>
                    <esia:passportSeries>1111</esia:passportSeries>
                    <esia:passportNumber>111111</esia:passportNumber>
                    <esia:firstname>XXXXX</esia:firstname>
                    <esia:lastname>XXXXXXX</esia:lastname>
                    <esia:middlename>XXXXXXX</esia:middlename>
                    <esia:mobile>+1(111)1111111</esia:mobile>
                    <esia:snils>111-111-111 11</esia:snils>
                    <esia:inn>111111111111</esia:inn>
                </AppData>
            </MessageData>
        </esia:Identification>
    </env:Body>
</env:Envelope>

Где Head в форматированном виде выглядит так:
Код:
<wsse:Security env:actor="http://smev.gosuslugi.ru/actors/smev" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    <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="#body">
                <Transforms>
                    <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                </Transforms>
                <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
                <DigestValue>+51PVQuDCu8rTb38PR/grIm0Z76Sh87T7JTbbPETkgU=</DigestValue>
            </Reference>
        </SignedInfo>
        <SignatureValue>m9m9jQ7wqqEy/uGTPUYbaG1PpfbtpKRvN2fwwJ7c4pB5UEXd2FJbbdBCvNuQYJtgu2t90nK9sE17
ar5atSxECA==</SignatureValue>
        <KeyInfo>
            <wsse:SecurityTokenReference>
                <wsse:Reference URI="#SenderCertificate" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/>
            </wsse:SecurityTokenReference>
        </KeyInfo>
    </Signature>
</wsse:Security>

Если сравнивать с XML автора топика, то отсутствует блок BinarySecurityToken.

Содержимое token перед проблемной строкой:
Код:
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" env:actor="http://smev.gosuslugi.ru/actors/smev">
<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="#body">
<Transforms>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
<DigestValue>+51PVQuDCu8rTb38PR/grIm0Z76Sh87T7JTbbPETkgU=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>INDN+TPAS5tGSpI2jRB7o+4Co8IFFfhQc39dQdpK3+mFiXVJfHqiC/MoLlXzxg5JnGqvdEnpwe+W
STuLyAL1EQ==</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>MIID+jCCA6mgAwIBAgITEgATqC5NLkbVNZmYOgAAABOoLjAIBgYqhQMCAgMwfzEjMCEGCSqGSIb3
DQEJARYUc3VwcG9ydEBjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJVMQ8wDQYDVQQHEwZNb3Njb3cx
FzAVBgNVBAoTDkNSWVBUTy1QUk8gTExDMSEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVy
IDIwHhcNMTYwODAzMDgxMjUzWhcNMTYxMTAzMDgyMjUzWjCCAQcxHDAaBgkqhkiG9w0BCQEWDWhp
a2VzQDFjcHMucnUxODA2BgNVBAMML9Ce0J7QniAi0KbQtdC90YLRgNCf0YDQvtCz0YDQsNC80LzQ
odC40YHRgtC10LwiMRkwFwYDVQQLDBDQk9GA0YPQv9C/0LAgV2ViMTgwNgYDVQQKDC/QntCe0J4g
ItCm0LXQvdGC0YDQn9GA0L7Qs9GA0LDQvNC80KHQuNGB0YLQtdC8IjEZMBcGA1UEBwwQ0JHQtdC7
0LPQvtGA0L7QtDEwMC4GA1UECAwn0JHQtdC70LPQvtGA0L7QtNGB0LrQsNGPINC+0LHQu9Cw0YHR
gtGMMQswCQYDVQQGEwJSVTBjMBwGBiqFAwICEzASBgcqhQMCAiQABgcqhQMCAh4BA0MABECnP3/I
p9xGcyM67BMCuYOo9HWZhUv8HwflOOe/gUrCS76C8FjEtMIUlKtayLBuoyuQIIzNekDYP4epg9k9
18o7o4IBcDCCAWwwDgYDVR0PAQH/BAQDAgTwMBMGA1UdJQQMMAoGCCsGAQUFBwMCMB0GA1UdDgQW
BBRJ4GS2tyv98oL09xsNvce+N/E8lzAfBgNVHSMEGDAWgBQVMXywjRreZtcVnElSlxckuQF6gzBZ
BgNVHR8EUjBQME6gTKBKhkhodHRwOi8vdGVzdGNhLmNyeXB0b3Byby5ydS9DZXJ0RW5yb2xsL0NS
WVBUTy1QUk8lMjBUZXN0JTIwQ2VudGVyJTIwMi5jcmwwgakGCCsGAQUFBwEBBIGcMIGZMGEGCCsG
AQUFBzAChlVodHRwOi8vdGVzdGNhLmNyeXB0b3Byby5ydS9DZXJ0RW5yb2xsL3Rlc3QtY2EtMjAx
NF9DUllQVE8tUFJPJTIwVGVzdCUyMENlbnRlciUyMDIuY3J0MDQGCCsGAQUFBzABhihodHRwOi8v
dGVzdGNhLmNyeXB0b3Byby5ydS9vY3NwL29jc3Auc3JmMAgGBiqFAwICAwNBADdObWVKW55j3eN1
uDP+VBfyJCWqkKW0XbrtlmLME8WwvjOBv4/FLzetb7Es8EjAfCqjlY3VH1WONr98lrPgGyQ=</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</wsse:Security>
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (3)
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.