| 
	Статус: Новичок
 Группы: Участники
Зарегистрирован: 13.10.2011(UTC)
 Сообщений: 4
 Откуда: Москва
 
 | 
            
		      
                Всем привет.Исходные данные:
 Разработка web-сервиса на Visual Studio 2005 + WSE 3.0
 Версия КриптоПро CSP 3.6
 Версии сборок Sharpei 1.0.0.10
 
 Есть сертификат, корректно установленный с e-tokena. Со ссылкой на закрытый ключ. Ключ в контейнере в реестре.
 
 Задача: подписать Body SOAP-сообщения.
 
 Подпись вроде как формируется, но при добавлении открытого ключа для проверки подписи начинаются проблемы.
 Т.е. в .net 2.0 есть объект X509SecurityToken, реализующий представление BinarySecurityToken в SOAP.  После инициализации, свойства объекта PublicKey и Key выдают exception: WSE2382: Key Type is not valid.
 Судя по StackTrace:
 в Microsoft.Web.Services3.Security.Cryptography.RSA.set_Key(AsymmetricAlgorithm value)
 в Microsoft.Web.Services3.Security.Tokens.X509SecurityToken.get_Key()
 происходит инициализация ключа по алгоритму RSA.
 
 Вопрос: как правильно сформировать BinarySecurityToken?
 Или как привильно подписать Body SOAP-сообщения используя алгоритмы ГОСТ?
 
 P.S. Видимо главным советом будет переход на WCF )
 
 
 | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Сотрудник
 Группы: Администраторы
 Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,417  Откуда: КРИПТО-ПРОСказал «Спасибо»: 37 разПоблагодарили: 729 раз в 630 постах
 
 | 
            
		      
                Глянул - жестко прошит rsa.Я так понял подпись формируется руками? Может воспользоваться system.xml? Там уже все "подправлено".
 | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Новичок
 Группы: Участники
Зарегистрирован: 13.10.2011(UTC)
 Сообщений: 4
 Откуда: Москва
 
 | 
            
		      
                maxdm написал:Глянул - жестко прошит rsa.Я так понял подпись формируется руками? Может воспользоваться system.xml? Там уже все "подправлено".
 Прошу прощения, но я не понимаю чем можно воспользоваться в system.xml? Я использовал SignedXml , делал все как в примерах Sharpei Sdk. Только вот BinarySecurityToken  пришлось самому формировать. Т.е. последовательность следующаяX509SecurityToken securityToken = new X509SecurityToken(_cert);  //_cert - это объект X509Certificate2 XmlElement bt = securityToken.GetXml(doc); //doc - это объект XmlDocument - Который представляет собой конверт SOAP-сообщения  итого вbt  я имею: <wsse:BinarySecurityToken ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="CertId-8ffc54bd7bb1485993726c69610864fa">MIIDEzCCAsKg........QSM=</wsse:BinarySecurityToken> И данный объект я уже добавляю к подписи. Но таким образом я думаю не корректно это делать. Наверное можно написать собственный класс, унаследовавшись от BinarySecurityToken, но пока не разобрался как это правильно сделать( А в Sharpei я так понимаю ничего на эту тему нет.			 | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Сотрудник
 Группы: Администраторы
 Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,417  Откуда: КРИПТО-ПРОСказал «Спасибо»: 37 разПоблагодарили: 729 раз в 630 постах
 
 | 
            
		      
                Ага, именно это я имел в виду. | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Новичок
 Группы: Участники
Зарегистрирован: 13.10.2011(UTC)
 Сообщений: 4
 Откуда: Москва
 
 | 
            
		      
                А как все таки реализовать BinarySecurityToken для SOAP-сообщений, на основании ГОСТ-сертификата? Очень нужно, пожалуйста помогите...
 
 | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Сотрудник
 Группы: Администраторы
 Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,417  Откуда: КРИПТО-ПРОСказал «Спасибо»: 37 разПоблагодарили: 729 раз в 630 постах
 
 | 
            
		      
                Двумя ответами выше у Вас он получился уже. | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Новичок
 Группы: Участники
Зарегистрирован: 13.10.2011(UTC)
 Сообщений: 4
 Откуда: Москва
 
 | 
            
		      
                Согласен, но с ним в итоге подпись не проходит проверку ( | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Сотрудник
 Группы: Администраторы
 Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,417  Откуда: КРИПТО-ПРОСказал «Спасибо»: 37 разПоблагодарили: 729 раз в 630 постах
 
 |  | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Участник
 Группы: Участники
 Зарегистрирован: 01.09.2010(UTC) Сообщений: 10  Откуда: Казань | 
            
		      
                И все же: возвращаясь к изначальной проблеме: Код:
X509Store store = new X509Store(StoreLocation.CurrentUser);
store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadOnly);
X509Certificate2 certificate = store.Certificates[0];
SoapContext context = client.RequestSoapContext;
X509SecurityToken token = new X509SecurityToken(certificate);
context.Security.Tokens.Add(token);
context.Security.Timestamp.TtlInSeconds = 60;
MessageSignature signature = new MessageSignature(token); // Вот здесь, собственно и валится: WSE 2382: Key Type is not valid
context.Security.Elements.Add(signature);
 Причины данного поведения понятны. Интересует именно решение. Что переопределить, чтобы заработало WSE + Sharpei + Gost? Возможно кто-то уже писал подобное? | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Вам и не снилось
 Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
 Сообщений: 831
 Откуда: Крипто-Про
 
 Сказал(а) «Спасибо»: 1 разПоблагодарили: 48 раз в 44 постах
 
 |  | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
	                           
	
    
        Быстрый переход
         
	
    
    Вы не можете создавать новые темы в этом форуме.
	
	Вы не можете отвечать в этом форуме.
	
	Вы не можете удалять Ваши сообщения в этом форуме.
	
	Вы не можете редактировать Ваши сообщения в этом форуме.
	
	Вы не можете создавать опросы в этом форуме.
	
	Вы не можете голосовать в этом форуме.
	
	
    
    
        Important Information:
        The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
        
        
More Details
        Close