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

Уведомление

Icon
Error

6 Страницы123>»
Опции
К последнему сообщению К первому непрочитанному
Offline PashaTechnique  
#1 Оставлено : 6 августа 2019 г. 10:22:46(UTC)
PashaTechnique

Статус: Активный участник

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

Сказал(а) «Спасибо»: 2 раз
Паша Техник снова с вами =)
Перенес тему сюда из прошлой темы, так как JCP же вроде.

Вообщем соап с подписью есть, шифрую документ, пытаюсь отправить запрос, получаю ошибку.
По порядку:
Метод создания соап документа и его подписи.
Код:
private static SOAPMessage createSoapRequest() throws Exception { 
		 
		 
		 if(!JCPXMLDSigInit.isInitialized()) {
			    JCPXMLDSigInit.init(); // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
			}
		 
		 KeyStore keyStore = KeyStore.getInstance("HDImageStore");
         keyStore.load(null, null);

         PrivateKey privateKey = (PrivateKey) keyStore.getKey("zeus", "password".toCharArray());
         X509Certificate certificate = (X509Certificate) keyStore.getCertificate("zeus");

		 MessageFactory messageFactory = MessageFactory.newInstance();
		 SOAPMessage soapMessage = messageFactory.createMessage();
		 SOAPPart soapPart = soapMessage.getSOAPPart();
    	 SOAPEnvelope soapEnvelope = soapPart.getEnvelope();
    	 soapEnvelope.addNamespaceDeclaration("end", "http://ru/ibs/fss/ln/ws/FileOperationsLn.wsdl");
		 SOAPBody soapBody = soapEnvelope.getBody();
		 SOAPElement soapElement = soapBody.addChildElement("getNewLNNum", "end");
		 SOAPElement element1 = soapElement.addChildElement("ogrn");
		 element1.addTextNode("1025401011833");
		 soapMessage.saveChanges();
		 
		 soapMessage.getSOAPPart().getEnvelope().addNamespaceDeclaration("wsse",
	                "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");
		 soapMessage.getSOAPPart().getEnvelope().addNamespaceDeclaration("wsu","http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd");
		 soapMessage.getSOAPPart().getEnvelope().addNamespaceDeclaration("ds","http://www.w3.org/2000/09/xmldsig#");
		 soapMessage.getSOAPBody().setAttributeNS("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd",
	                "wsu:Id", "body");

			
	        
	        // Формируем заголовок.
	        WSSecHeader header = new WSSecHeader();
	        header.setActor("http://eln.fss.ru/actor/mo/1025401011833");        				 
	        header.setMustUnderstand(false);
	        
	        // Получаем документ.
	        Document doc = soapMessage.getSOAPPart().getEnvelope().getOwnerDocument();
	        Element secHeader = header.insertSecurityHeader(soapMessage.getSOAPPart().getEnvelope().getOwnerDocument());
	        Element token = header.getSecurityHeader();
	        
	        NodeList list = secHeader.getElementsByTagName("wsse:BinarySecurityToken");
	        Element binSecToken = null;
	        
	        if (list.getLength()!=0){
	        	binSecToken = (Element) list.item(0); 
	        }else{
	        	binSecToken = (Element) header.getSecurityHeader().appendChild(doc.createElementNS("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd","wsse:BinarySecurityToken"));
	        }
	        
	        binSecToken.setAttribute("wsu:Id", "OGRN_1025401011833");
	        binSecToken.setAttribute(
					"EncodingType",
					"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary");
	        binSecToken.setAttribute(
					"ValueType",
					"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3");
	        		
	        /*** Подпись данных ***/

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

	        // Преобразования над документом.
	        final Transforms transforms = new Transforms(doc);
	        transforms.addTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS);

	        XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM", xmlDSigProvider);

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

	        // Ссылка на подписываемые данные.
	        Reference ref = fac.newReference("#body",
	            fac.newDigestMethod("urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256", null),
	            transformList, null, null);

	        // Блок SignedInfo.
	        SignedInfo si = fac.newSignedInfo( fac.newCanonicalizationMethod(CanonicalizationMethod.EXCLUSIVE,
	            (C14NMethodParameterSpec) null),
	            fac.newSignatureMethod("urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256", null),
	            Collections.singletonList(ref));

	        // Блок KeyInfo.
	        KeyInfoFactory kif = fac.getKeyInfoFactory();
	        X509Data x509d = kif.newX509Data(Collections.singletonList(certificate));
	        KeyInfo ki = kif.newKeyInfo(Collections.singletonList(x509d));
			 
	        // Подпись данных.
	        javax.xml.crypto.dsig.XMLSignature sig = fac.newXMLSignature(si, ki);
	        DOMSignContext signContext = new DOMSignContext((Key)privateKey, token);
	        sig.sign(signContext);

	        // Блок подписи Signature.
	        Element sigE = (Element) XPathAPI.selectSingleNode(signContext.getParent(), "//ds:Signature");
	        // Блок данных KeyInfo.
	        Node keyE = XPathAPI.selectSingleNode(sigE, "//ds:KeyInfo", sigE);
	        
	        // Элемент SenderCertificate, который должен содержать сертификат.
			list = secHeader.getElementsByTagName("wsse:BinarySecurityToken");
	        Element cerVal = (Element)list.item(0);
	        
	        //Element cerVal = (Element) XPathAPI.selectSingleNode(token, "//*[@wsu:Id='SenderCertificate']");
	        cerVal.setTextContent(XPathAPI.selectSingleNode(keyE, "//ds:X509Certificate", keyE).getFirstChild().getNodeValue());

	        // Удаляем элементы KeyInfo, попавшие в тело документа. Они должны быть только в header.
	        keyE.removeChild(XPathAPI.selectSingleNode(keyE, "//ds:X509Data", keyE));

	        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", "OGRN_1025401011833");
	        header.getSecurityHeader().appendChild(sigE);
		
			soapMessage.saveChanges();
//			
		 System.out.println("----------SOAP Request------------");
		 soapMessage.writeTo(System.out);
		 
		 return soapMessage;
		 
	 }

Результат:
Код:
----------SOAP Request------------
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:end="http://ru/ibs/fss/ln/ws/FileOperationsLn.wsdl" 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"><SOAP-ENV:Header><wsse:Security SOAP-ENV:actor="http://eln.fss.ru/actor/mo/1025401011833" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="OGRN_1025401011833">MIIDkTCCA0CgAwIBAgITEgA4/fAC4SR8WI2UNQABADj98DAIBgYqhQMCAgMwfzEjMCEGCSqGSIb3
DQEJARYUc3VwcG9ydEBjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJVMQ8wDQYDVQQHEwZNb3Njb3cx
FzAVBgNVBAoTDkNSWVBUTy1QUk8gTExDMSEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVy
IDIwHhcNMTkwNzIzMDczNzQwWhcNMTkxMDIzMDc0NzQwWjCBljEgMB4GCSqGSIb3DQEJARYRcmV0
MTIzcmV0QG1haWwucnUxGTAXBgNVBAMMEFNoYXNoa292IEV2Z2VuaWkxCzAJBgNVBAsMAklUMQ8w
DQYDVQQKDAZLT01JQUMxFTATBgNVBAcMDE5vdm9rdXpuZXRzazEVMBMGA1UECAwMTm92b2t1em5l
dHNrMQswCQYDVQQGEwJSVTBmMB8GCCqFAwcBAQEBMBMGByqFAwICJAAGCCqFAwcBAQICA0MABECg
MYebqlT5Z/0xUFI6B2BQ/OrVH+PAApw+4MA+m35zBphmU6/XsHFQ7PiuXgbdA7yAYHQEenWvoT3P
BSph5WW0o4IBdjCCAXIwDgYDVR0PAQH/BAQDAgTwMBMGA1UdJQQMMAoGCCsGAQUFBwMCMB0GA1Ud
DgQWBBROTjX9G1CBPUbTZykKaBU89Ztn2DAfBgNVHSMEGDAWgBROgz4Uae/sXXqVK18R/jcyFklV
KzBcBgNVHR8EVTBTMFGgT6BNhktodHRwOi8vdGVzdGNhLmNyeXB0b3Byby5ydS9DZXJ0RW5yb2xs
L0NSWVBUTy1QUk8lMjBUZXN0JTIwQ2VudGVyJTIwMigxKS5jcmwwgawGCCsGAQUFBwEBBIGfMIGc
MGQGCCsGAQUFBzAChlhodHRwOi8vdGVzdGNhLmNyeXB0b3Byby5ydS9DZXJ0RW5yb2xsL3Rlc3Qt
Y2EtMjAxNF9DUllQVE8tUFJPJTIwVGVzdCUyMENlbnRlciUyMDIoMSkuY3J0MDQGCCsGAQUFBzAB
hihodHRwOi8vdGVzdGNhLmNyeXB0b3Byby5ydS9vY3NwL29jc3Auc3JmMAgGBiqFAwICAwNBAKO3
xo+lLAp+6tbpTHiboyM4ZFJ4K+zZTRvV8nv61H3+hgrXAAWCSQi8TiBAMeKHeUmGz9JxJbn76zdL
cyrdDL0=</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="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"/><Reference URI="#body"><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>mdvUPVEdSSzhK4GNjBJ1+20HJ9MYnjRFnDsq0qFEhcE=</DigestValue></Reference></SignedInfo><SignatureValue>3kYqxMlXmVaG3bm0/D0GhnFsFb8htdLRfp4fpQ32tFcMs4wLwck92N1OhrSshgnNxu06eTCnFLR9
8GNP97y4Pg==</SignatureValue><KeyInfo><wsse:SecurityTokenReference><wsse:Reference URI="OGRN_1025401011833" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/></wsse:SecurityTokenReference></KeyInfo></Signature></wsse:Security></SOAP-ENV:Header><SOAP-ENV:Body wsu:Id="body"><end:getNewLNNum><ogrn>1025401011833</ogrn></end:getNewLNNum></SOAP-ENV:Body></SOAP-ENV:Envelope><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:end="http://ru/ibs/fss/ln/ws/FileOperationsLn.wsdl" 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"><SOAP-ENV:Header><wsse:Security SOAP-ENV:actor="http://eln.fss.ru/actor/mo/1025401011833" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="OGRN_1025401011833">MIIDkTCCA0CgAwIBAgITEgA4/fAC4SR8WI2UNQABADj98DAIBgYqhQMCAgMwfzEjMCEGCSqGSIb3
DQEJARYUc3VwcG9ydEBjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJVMQ8wDQYDVQQHEwZNb3Njb3cx
FzAVBgNVBAoTDkNSWVBUTy1QUk8gTExDMSEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVy
IDIwHhcNMTkwNzIzMDczNzQwWhcNMTkxMDIzMDc0NzQwWjCBljEgMB4GCSqGSIb3DQEJARYRcmV0
MTIzcmV0QG1haWwucnUxGTAXBgNVBAMMEFNoYXNoa292IEV2Z2VuaWkxCzAJBgNVBAsMAklUMQ8w
DQYDVQQKDAZLT01JQUMxFTATBgNVBAcMDE5vdm9rdXpuZXRzazEVMBMGA1UECAwMTm92b2t1em5l
dHNrMQswCQYDVQQGEwJSVTBmMB8GCCqFAwcBAQEBMBMGByqFAwICJAAGCCqFAwcBAQICA0MABECg
MYebqlT5Z/0xUFI6B2BQ/OrVH+PAApw+4MA+m35zBphmU6/XsHFQ7PiuXgbdA7yAYHQEenWvoT3P
BSph5WW0o4IBdjCCAXIwDgYDVR0PAQH/BAQDAgTwMBMGA1UdJQQMMAoGCCsGAQUFBwMCMB0GA1Ud
DgQWBBROTjX9G1CBPUbTZykKaBU89Ztn2DAfBgNVHSMEGDAWgBROgz4Uae/sXXqVK18R/jcyFklV
KzBcBgNVHR8EVTBTMFGgT6BNhktodHRwOi8vdGVzdGNhLmNyeXB0b3Byby5ydS9DZXJ0RW5yb2xs
L0NSWVBUTy1QUk8lMjBUZXN0JTIwQ2VudGVyJTIwMigxKS5jcmwwgawGCCsGAQUFBwEBBIGfMIGc
MGQGCCsGAQUFBzAChlhodHRwOi8vdGVzdGNhLmNyeXB0b3Byby5ydS9DZXJ0RW5yb2xsL3Rlc3Qt
Y2EtMjAxNF9DUllQVE8tUFJPJTIwVGVzdCUyMENlbnRlciUyMDIoMSkuY3J0MDQGCCsGAQUFBzAB
hihodHRwOi8vdGVzdGNhLmNyeXB0b3Byby5ydS9vY3NwL29jc3Auc3JmMAgGBiqFAwICAwNBAKO3
xo+lLAp+6tbpTHiboyM4ZFJ4K+zZTRvV8nv61H3+hgrXAAWCSQi8TiBAMeKHeUmGz9JxJbn76zdL
cyrdDL0=</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="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"/><Reference URI="#body"><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>mdvUPVEdSSzhK4GNjBJ1+20HJ9MYnjRFnDsq0qFEhcE=</DigestValue></Reference></SignedInfo><SignatureValue>3kYqxMlXmVaG3bm0/D0GhnFsFb8htdLRfp4fpQ32tFcMs4wLwck92N1OhrSshgnNxu06eTCnFLR9
8GNP97y4Pg==</SignatureValue><KeyInfo><wsse:SecurityTokenReference><wsse:Reference URI="OGRN_1025401011833" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/></wsse:SecurityTokenReference></KeyInfo></Signature></wsse:Security></SOAP-ENV:Header><SOAP-ENV:Body wsu:Id="body"><end:getNewLNNum><ogrn>1025401011833</ogrn></end:getNewLNNum></SOAP-ENV:Body></SOAP-ENV:Envelope>
Offline PashaTechnique  
#2 Оставлено : 6 августа 2019 г. 10:29:13(UTC)
PashaTechnique

Статус: Активный участник

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

Сказал(а) «Спасибо»: 2 раз
Вообщем далее использую класс CryptXML из sample-source. Сделал ему конструктор передал сообщения с подписью получившееся ранее. Помучался с библиотеками. Но все работает.
Конструктор без дешифровки:
Код:
public CryptXML(SOAPMessage message) throws Exception {
    /**
     * Регистрация алгоритмов ГОСТ
     */
    XmlInit.init();

    /**
     * создание простого XML докуента для примера.
     */
    Document doc = message.getSOAPPart().getEnvelope().getOwnerDocument();
    writeDoc(doc, System.out);
    System.out.println("");

    /*
     * создание временной ключевой пары для теста.
     */
    KeyTwix twix = CertGen.generateTwix1(JCP.GOST_EL_DH_EPH_NAME, "Crypto",
        JCP.GOST_EL_SIGN_NAME, JCP.PROVIDER_NAME, "CN=cert");
    //KeyTwix twix = new KeyTwix("XmlSignEncrypt");

    /**
     * зашифрование "на сертификате".
     */
    encrypt(doc, twix.getCert());
    writeDoc(doc, System.out);
    System.out.println("");

    /**
     * расшифрование на секретном ключе.
     */
//    decrypt(doc, twix.getPrivate());
//    writeDoc(doc, System.out);
//    System.out.println("");

}


Результат:
Код:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:end="http://ru/ibs/fss/ln/ws/FileOperationsLn.wsdl" 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"><xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Content"><xenc:EncryptionMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gost28147"/><ds:KeyInfo>
<xenc:EncryptedKey xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"><xenc:EncryptionMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:transport-gost2001"/><ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>
MIIBSTCB+aADAgECAgQnZVs+MAgGBiqFAwICAzAPMQ0wCwYDVQQDDARjZXJ0MB4XDTE5MDgwNjA3
MjA1NloXDTIwMDgwNjA3MjA1NlowDzENMAsGA1UEAwwEY2VydDBjMBwGBiqFAwICEzASBgcqhQMC
AiQABgcqhQMCAh4BA0MABEDfS5dATpipTtLgsT7yubbCWsv17278irpwFiKlk1Ig9aW76Mx+zT43
wuHIzFJn5UMStRnvIrDw8ncp05sbb7rTozswOTAOBgNVHQ8BAf8EBAMCA+gwEwYDVR0lBAwwCgYI
KwYBBQUHAwIwEgYDVR0TAQH/BAgwBgEB/wIBBTAIBgYqhQMCAgMDQQCGE7/xWEEpDtgyKlkMk3W5
Hphj6ZyZqrmnCMfQHYVDCYtZs5iKcP8guV7hKQVBljOZxmAa3HCJMA/pVq7ZnjQX
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo><xenc:CipherData><xenc:CipherValue>MIGkMCgEIO9cfsyoDrpaMHX3ScDTrDWD8rJ2ADDbNQ4sNd2Rg/kuBARCblXPoHgGByqFAwICHwGg
YzAcBgYqhQMCAhMwEgYHKoUDAgIkAAYHKoUDAgIeAQNDAARAiclE2ckEX+LImifR+4Yq0VhLj9/q
Sjb1kjxJTEN3KnXwHz1yDW1VHA0zkABwaQVdsiPIOA5f8158Nc96DJhkOwQI5laec9PYemw=</xenc:CipherValue></xenc:CipherData></xenc:EncryptedKey></ds:KeyInfo><xenc:CipherData><xenc:CipherValue>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
6bjNib1gYDQWFX5GU36qpwHBhyjaj268ETU=</xenc:CipherValue></xenc:CipherData></xenc:EncryptedData></SOAP-ENV:Envelope>
Offline PashaTechnique  
#3 Оставлено : 6 августа 2019 г. 10:31:23(UTC)
PashaTechnique

Статус: Активный участник

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

Сказал(а) «Спасибо»: 2 раз
Пробую отправить запрос в итоге вижу это:
Код:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body>
      <S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope">
         <faultcode>S:Server</faultcode>
         <faultstring>unexpected XML tag. expected: {http://schemas.xmlsoap.org/soap/envelope/}Body but found: {http://www.w3.org/2001/04/xmlenc#}EncryptedData</faultstring>
      </S:Fault>
   </S:Body>
</S:Envelope>


P.S. Растянул на 3 сообщения думал не влезет.
Offline two_oceans  
#4 Оставлено : 6 августа 2019 г. 10:39:08(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
В прошлой теме после Ваших сообщений уже обсуждали подобное - прочитайте последнее сообщение прошлой темы, у Вас тоже тип не тот и Body отсутствует.
Offline PashaTechnique  
#5 Оставлено : 13 августа 2019 г. 9:30:34(UTC)
PashaTechnique

Статус: Активный участник

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

Сказал(а) «Спасибо»: 2 раз
Я скоро просто взорвусь Brick wall . two_oceans вся надежда на тебя.
Создал XML, подписал, зашифровал, как сказано в прошлой теме все убрал. Header пустой, в Body подписанное сообщение зашифрованное.
Ниже что получилось:
Код:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><SOAP-ENV:Body><EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element"><EncryptionMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gost28147"/><KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#"><EncryptionMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:transport-gost2001"/><KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><X509Data><X509Certificate>MIIDkTCCA0CgAwIBAgITEgA4/fAC4SR8WI2UNQABADj98DAIBgYqhQMCAgMwfzEj
MCEGCSqGSIb3DQEJARYUc3VwcG9ydEBjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJV
MQ8wDQYDVQQHEwZNb3Njb3cxFzAVBgNVBAoTDkNSWVBUTy1QUk8gTExDMSEwHwYD
VQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVyIDIwHhcNMTkwNzIzMDczNzQwWhcN
MTkxMDIzMDc0NzQwWjCBljEgMB4GCSqGSIb3DQEJARYRcmV0MTIzcmV0QG1haWwu
cnUxGTAXBgNVBAMMEFNoYXNoa292IEV2Z2VuaWkxCzAJBgNVBAsMAklUMQ8wDQYD
VQQKDAZLT01JQUMxFTATBgNVBAcMDE5vdm9rdXpuZXRzazEVMBMGA1UECAwMTm92
b2t1em5ldHNrMQswCQYDVQQGEwJSVTBmMB8GCCqFAwcBAQEBMBMGByqFAwICJAAG
CCqFAwcBAQICA0MABECgMYebqlT5Z/0xUFI6B2BQ/OrVH+PAApw+4MA+m35zBphm
U6/XsHFQ7PiuXgbdA7yAYHQEenWvoT3PBSph5WW0o4IBdjCCAXIwDgYDVR0PAQH/
BAQDAgTwMBMGA1UdJQQMMAoGCCsGAQUFBwMCMB0GA1UdDgQWBBROTjX9G1CBPUbT
ZykKaBU89Ztn2DAfBgNVHSMEGDAWgBROgz4Uae/sXXqVK18R/jcyFklVKzBcBgNV
HR8EVTBTMFGgT6BNhktodHRwOi8vdGVzdGNhLmNyeXB0b3Byby5ydS9DZXJ0RW5y
b2xsL0NSWVBUTy1QUk8lMjBUZXN0JTIwQ2VudGVyJTIwMigxKS5jcmwwgawGCCsG
AQUFBwEBBIGfMIGcMGQGCCsGAQUFBzAChlhodHRwOi8vdGVzdGNhLmNyeXB0b3By
by5ydS9DZXJ0RW5yb2xsL3Rlc3QtY2EtMjAxNF9DUllQVE8tUFJPJTIwVGVzdCUy
MENlbnRlciUyMDIoMSkuY3J0MDQGCCsGAQUFBzABhihodHRwOi8vdGVzdGNhLmNy
eXB0b3Byby5ydS9vY3NwL29jc3Auc3JmMAgGBiqFAwICAwNBAKO3xo+lLAp+6tbp
THiboyM4ZFJ4K+zZTRvV8nv61H3+hgrXAAWCSQi8TiBAMeKHeUmGz9JxJbn76zdL
cyrdDL0=</X509Certificate></X509Data></KeyInfo><CipherData><CipherValue>MIGpMCgEID7M1+ucxUXGs4y19SvS6eZ7H9GXY8leZlUrbDaQDJ2IBARFAH2EoH0GCSqFAwcBAgUB
AaBmMB8GCCqFAwcBAQEBMBMGByqFAwICJAAGCCqFAwcBAQICA0MABEAIHpJ29MDFk/oIdW2lMhJb
tFqq/73/ec6tFgRSdlLXP2eEF45pMgIF9rfU/GR555gYRMBtCJtiuX8F0RlzmUG/BAigcyTgnHrG
Qg==</CipherValue></CipherData></EncryptedKey></KeyInfo><CipherData><CipherValue>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</CipherValue></CipherData></EncryptedData></SOAP-ENV:Body></SOAP-ENV:Envelope>


Ошибка:
Код:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body>
      <S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope">
         <faultcode>S:Server</faultcode>
         <faultstring>ru.ibs.cryptoprto.jcp.wrapper.eln.ws.client.generated.CryptoException_Exception: Не удалось расшифровать сообщение. Возможно сообщение зашифровано на ключе отличном от ключа уполномоченного лица ФСС. Проверьте правильность и актуальность ключа уполномоченного лица ФСС.</faultstring>
      </S:Fault>
   </S:Body>
</S:Envelope>


Ну что ему еще нужно то, что я делаю не так подскажите...
Offline two_oceans  
#6 Оставлено : 13 августа 2019 г. 10:05:13(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Добрый день.
На структуру уже не ругается, это уже прогресс.

По поводу сообщения - на каком сертификате шифровали? Сертификат заменяли после шифрования? В примере стоит сертификат тестового УЦ, это уже замененный на Ваш или так и шифровали? Даже не знаю допустим ли тестовый УЦ - лучше уточнить в рекомендациях сервиса.
P.S. В личку конечно тоже можно, но в разделе Джава отвечают достаточно оперативно, может быть и кроме меня у кого появятся мысли. Все-таки я сам шифрование ФСС не реализовывал, читал в темах на этом форуме и чего-то могу не знать.
Offline PashaTechnique  
#7 Оставлено : 13 августа 2019 г. 10:18:34(UTC)
PashaTechnique

Статус: Активный участник

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

Сказал(а) «Спасибо»: 2 раз
Автор: two_oceans Перейти к цитате
Добрый день.
На структуру уже не ругается, это уже прогресс.

По поводу сообщения - на каком сертификате шифровали? Сертификат заменяли после шифрования? В примере стоит сертификат тестового УЦ, это уже замененный на Ваш или так и шифровали? Даже не знаю допустим ли тестовый УЦ - лучше уточнить в рекомендациях сервиса.
P.S. В личку конечно тоже можно, но в разделе Джава отвечают достаточно оперативно, может быть и кроме меня у кого появятся мысли. Все-таки я сам шифрование ФСС не реализовывал, читал в темах на этом форуме и чего-то могу не знать.


Ну получается на единственном возможном, который имел закрытый ключ, я как понял это же обязательное условие для создания подписи, именно подписи, а не вставки сертификата.
Заменить его на что ?
Да в примере стоит сертификат выданный УЧ на некоторый период, он походу является тестовым. На нем и шифрую.
Не понимаю как это шифровать на сертификате ФСС?

sertifikaty.jpg (201kb) загружен 24 раз(а).
Offline PashaTechnique  
#8 Оставлено : 13 августа 2019 г. 10:38:48(UTC)
PashaTechnique

Статус: Активный участник

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

Сказал(а) «Спасибо»: 2 раз
Ведь сертификат выданный УЦ, имеет закрытый ключ для шифрования. А сертификат ФСС имеет только открытый для дешифровки. Если я все верно понимаю конечно.
То есть сформировать\послать запрос я смогу только имея какой-то закрытый ключ.
Offline two_oceans  
#9 Оставлено : 13 августа 2019 г. 11:46:46(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Не совсем так, вот смотрите - когда подписываете своим закрытым ключом, на самом деле зашифровываете значение хэша закрытым ключом. При этом любой кто имеет сертификат, соответствующий этому ключу, может при помощи открытого сертификата расшифровать зашифрованный хэш и сравнить с фактических хэшем, то есть проверить подпись. Для упрощения сертификат даже прикладывается к подписи. это подписание. Другими словами у заинтересованных лиц не возникнет сложности узнать открытый ключ из сертификата и расшифровать хэш.

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

Сам по себе сертификат ФСС тоже получен в УЦ, разница только в присутствии контейнера с закрытым ключом и наличии связи сертификата с контейнером.

Отредактировано пользователем 13 августа 2019 г. 12:20:18(UTC)  | Причина: Убрал свои представления о схеме обмена ключами - лучше почитайте доки

Offline PashaTechnique  
#10 Оставлено : 13 августа 2019 г. 12:20:00(UTC)
PashaTechnique

Статус: Активный участник

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

Сказал(а) «Спасибо»: 2 раз
Автор: two_oceans Перейти к цитате
Не совсем так, вот смотрите - когда подписываете своим закрытым ключом, на самом деле зашифровываете значение хэша закрытым ключом. При этом любой кто имеет сертификат, соответствующий этому ключу, может при помощи открытого сертификата расшифровать зашифрованный хэш и сравнить с фактических хэшем, то есть проверить подпись. Для упрощения сертификат даже прикладывается к подписи. это подписание. Другими словами у заинтересованных лиц не возникнет сложности узнать открытый ключ из сертификата и расшифровать хэш.

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

Сам по себе сертификат ФСС тоже получен в УЦ, разница только в присутствии контейнера с закрытым ключом и наличии связи сертификата с контейнером.


Если я вас правильно понял, все что вы сейчас описали делает следующая вещь.
Данный метод как раз берет тот самый сертификат ФСС. Для того чтобы пройти ту самую подлинность.

Код:

public static X509Certificate ExtractCertFromCertStore()
            throws NoSuchProviderException, KeyStoreException, IOException, CertificateException, NoSuchAlgorithmException, UnrecoverableKeyException {
		
        KeyStore allCertStore = null;
        String storepass = "pass";
        String alias = "fss_test_cert_2019_34.10-2012.cer";

        allCertStore = KeyStore.getInstance("CertStore");
        File f = new File("C:\\Users\\shashkov\\Documents\\fssstore\\fssstore");
        allCertStore.load(new FileInputStream(f), storepass.toCharArray());
        X509Certificate UserCert = (X509Certificate) allCertStore.getCertificate(alias);
        
        if (UserCert!=null)
        	System.out.println("Сертификат из файла, загружен.");
	    else
	    	System.out.println("Сертификат из файла, не загружен.");
        
        return UserCert;
        
    }


Этот метод берет тот самый ключ для подписи:
Код:

public static X509Certificate GetCertificateFromStorage(String Alias)
	            throws NoSuchProviderException, KeyStoreException, IOException, CertificateException, NoSuchAlgorithmException, UnrecoverableKeyException {

		 if(!JCPXMLDSigInit.isInitialized()) {
			    JCPXMLDSigInit.init(); 
		 }
		 
	     KeyStore ks = KeyStore.getInstance("HDImageStore");
	     ks.load(null, null);
	     X509Certificate certificate = (X509Certificate)ks.getCertificate(Alias);
	     
	     if (certificate!=null)
	    	 System.out.println("Сертификат из хранилища HDImageStore, загружен.");
	     else
	    	 System.out.println("Сертификат из хранилища HDImageStore, не загружен.");
	     
	     return certificate;
	     
	    }


Далее при шифровании происходит следующее:
Код:

      ...
      //Шифрование подписанного документа
      org.w3c.dom.Document doc = StartEncrypt(KeyCertificate.ExtractCertFromCertStore(), nameFile);
      X509Certificate.addTextNode(KeyCertificate.certToBase64(KeyCertificate.GetCertificateFromStorage("zeus")));
      ....
      public  static Document StartEncrypt(X509Certificate cert , String nameFile) throws Exception
    {
        XmlInit.init();
        MessageFactory mf = MessageFactory.newInstance();
        SOAPMessage message = mf.createMessage();
        SOAPPart soapPart = message.getSOAPPart();

        FileInputStream is = new FileInputStream("C:\\Storage\\Store\\"+nameFile); // ЕСЛИ берем из файла

        soapPart.setContent(new StreamSource(is));
        Document doc = message.getSOAPPart().getEnvelope().getOwnerDocument();

        //Создание случайного сессионного ключа.
        final KeyGenerator kg = KeyGenerator.getInstance("GOST28147");
        final SecretKey sessionKey = kg.generateKey();

        //Зашифрование сессионного ключа.
        EncryptedKey encryptedKey = wrapKey(doc, sessionKey, cert);
        //  EncryptedKey encryptedKey = wrapKey(doc, pk, cert);
        //зашифрование документа
        Element element = doc.getDocumentElement();
        XMLCipher xmlCipher = XMLCipher.getInstance(Consts.URI_GOST_CIPHER);
        xmlCipher.init(XMLCipher.ENCRYPT_MODE, sessionKey);
        // добавляем шифрованный ключ.
        EncryptedData encryptedData = xmlCipher.getEncryptedData();
        KeyInfo keyInfo = new KeyInfo(doc);
        keyInfo.add(encryptedKey);
        encryptedData.setKeyInfo(keyInfo);
        //зашифрование документа
        xmlCipher.doFinal(doc, element, false);
        is.close();
        return doc;
    }


Трудно на словах разобраться что там происходит, я даже половины не понял того что и вы то описали. Можете попробовать какими-то наводящими примерами?
Большая часть кода в проекте взята из исходников примеров предоставляемых самими Crypto Pro, естественно некоторые нюансы такие как пути к хранилищам, доступ к ним же так же проверен, все работает, на ура. Эх какая же тут путаница...
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
6 Страницы123>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.