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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline ESofter  
#1 Оставлено : 19 января 2015 г. 22:54:36(UTC)
ESofter

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

Группы: Участники
Зарегистрирован: 19.01.2015(UTC)
Сообщений: 67

Сказал(а) «Спасибо»: 5 раз
Поблагодарили: 2 раз в 2 постах
Здравствуйте.
Пишу клиента для СМЭВ. Код нашел на просторах инета:
https://github.com/aanufriyev/SmevWCFService

Вылетает очень странная ошибка, суть которой я не могу понять.
Для теста использовал ДВА сертификата: сделал самоподписанный сертификат (через КриптоАрм - через меню). И также взял один старый (годом ранее использовал его в другом проекте) РАБОЧИЙ сертификат. Оба в формате *.cer

Используется КриптоПРО CSP 3.9 Триальный режим. (ENG версия !)

System.ArgumentException was unhandled by user code
HResult=-2147024809
Message=Коллекция шифрования маркера не поддерживает алгоритм "urn:ietf:params:xml:ns:cpxmlsec:algorithms:transport-gost2001".
Source=System.IdentityModel
StackTrace:
в System.IdentityModel.SecurityUtils.EncryptKey(SecurityToken wrappingToken, String encryptionMethod, Byte[] keyToWrap)
в System.ServiceModel.Security.Tokens.WrappedKeySecurityToken..ctor(String id, Byte[] keyToWrap, String wrappingAlgorithm, XmlDictionaryString wrappingAlgorithmDictionaryString, SecurityToken wrappingToken, SecurityKeyIdentifier wrappingTokenReference, Byte[] wrappedKey, SecurityKey wrappingSecurityKey)
в CryptoPro.Sharpei.ServiceModel.CPWrappedKeySecurityToken.Detour..ctor(String id, Byte[] keyToWrap, String wrappingAlgorithm, XmlDictionaryString wrappingAlgorithmDictionaryString, SecurityToken wrappingToken, SecurityKeyIdentifier wrappingTokenReference, Byte[] wrappedKey, SecurityKey wrappingSecurityKey)
в System.ServiceModel.Security.Tokens.WrappedKeySecurityToken..ctor(String id, Byte[] keyToWrap, String wrappingAlgorithm, XmlDictionaryString wrappingAlgorithmDictionaryString, SecurityToken wrappingToken, SecurityKeyIdentifier wrappingTokenReference)
в System.ServiceModel.Security.SendSecurityHeader.StartEncryption()
в CryptoPro.Sharpei.ServiceModel.CPSendSecurityHeader.StartEncryption()
в System.ServiceModel.Security.SendSecurityHeader.StartSecurityApplication()
в System.ServiceModel.Security.SecurityAppliedMessage.OnWriteMessage(XmlDictionaryWriter writer)
в System.ServiceModel.Channels.BufferedMessageWriter.WriteMessage(Message message, BufferManager bufferManager, Int32 initialOffset, Int32 maxSizeQuota)
в System.ServiceModel.Channels.TextMessageEncoderFactory.TextMessageEncoder.WriteMessage(Message message, Int32 maxMessageSize, BufferManager bufferManager, Int32 messageOffset)
в Binding.SMEVTextMessageEncoder.WriteMessage(Message message, Int32 maxMessageSize, BufferManager bufferManager, Int32 messageOffset) в c:\TestProj\SmevWCFService-master\Binding\SMEVTextMessageEncoder.cs:строка 82
в System.ServiceModel.Channels.HttpOutput.SerializeBufferedMessage(Message message, Boolean shouldRecycleBuffer)
в System.ServiceModel.Channels.HttpOutput.Send(TimeSpan timeout)
в System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.SendRequest(Message message, TimeSpan timeout)
в System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
в System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.Request(Message message, TimeSpan timeout)
в System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
в System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
в System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
в System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
InnerException: Null


Вот код, который приводит к этой проблеме:
(я просто исправил файл https://github.com/aanuf...aster/Client/Program.cs)

X509Certificate2 clientCert = new X509Certificate2();
clientCert.Import(@"C:\MyCert\cert.crt");

X509Certificate2 serviceCert = new X509Certificate2();
serviceCert.Import(@"C:\MyCert\cert.crt");

// далее ничего не менял
var serverName = serviceCert.GetNameInfo(X509NameType.SimpleName, false);

if (serverName != null)
{
var endpointAddr = new EndpointAddress(new Uri("http://localhost:1622/Service1.svc"),
EndpointIdentity.CreateDnsIdentity(
serverName));
client.Endpoint.Address = endpointAddr;
}



Ошибка вылетает в этом файле:
https://github.com/aanuf...MEVTextMessageEncoder.cs

public override ArraySegment<byte> WriteMessage(Message message, int maxMessageSize, BufferManager bufferManager, int messageOffset)
{

var array = innerEncoder.WriteMessage(message, maxMessageSize, bufferManager, messageOffset).Array; << Вот тут и вылетело исключение


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

Спасибо !
Offline Максим Коллегин  
#2 Оставлено : 19 января 2015 г. 23:11:59(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,377
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 706 раз в 614 постах
Для WCF в .NET еще нужен КриптоПро .NET.
Знания в базе знаний, поддержка в техподдержке
Offline ESofter  
#3 Оставлено : 20 января 2015 г. 12:48:42(UTC)
ESofter

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

Группы: Участники
Зарегистрирован: 19.01.2015(UTC)
Сообщений: 67

Сказал(а) «Спасибо»: 5 раз
Поблагодарили: 2 раз в 2 постах
Автор: maxdm Перейти к цитате
Для WCF в .NET еще нужен КриптоПро .NET.


КриптоПро .NET + .Net SDK стоят. Для проверки еще раз запустил инстляторы - они предложили модифицировать уже установленные компоненты, т.е. заметили что уже установлены.
Проект собирается под сборку .Net 4. Стоит система Windows 8 64. Компоненты КриптоПро, судя по всему установленны нормально - т.к. ссылка на библиотеку "CryptoPro.Sharpei.ServiceModel.dll" в проекте отображется нормально (не помечена желтым значком).

Подскажите, что еще может быть ? Не могу понять в чем ошибка - поиск в гугле выдает лишь одну ссылку: на эту тему форума Eh?
Offline ESofter  
#4 Оставлено : 20 января 2015 г. 14:33:36(UTC)
ESofter

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

Группы: Участники
Зарегистрирован: 19.01.2015(UTC)
Сообщений: 67

Сказал(а) «Спасибо»: 5 раз
Поблагодарили: 2 раз в 2 постах
Появился еще такой вопрос - а когда нужно использовать КриптоПро TLS ? Нужно понять - нужен ли он нам, или нет в проекте интеграции со СМЭВ.
Offline ESofter  
#5 Оставлено : 20 января 2015 г. 16:40:54(UTC)
ESofter

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

Группы: Участники
Зарегистрирован: 19.01.2015(UTC)
Сообщений: 67

Сказал(а) «Спасибо»: 5 раз
Поблагодарили: 2 раз в 2 постах
Ого ! Оказывается тот пример, что я нашел в интернете https://github.com/aanufriyev/SmevWCFService - этот проект находится в примерах КриптоПро, в файле Wcf.Zip.

В общем я сейчас взял этот пример. НИЧЕГО в нем не изменил, кроме того, что сделал загрузку сертификата из файла (у меня почему то не находит сертификат в хранилище по отпечатку - почему то):

Код:
X509Certificate2 clientCert = new X509Certificate2();
            clientCert.Import(@"C:\MyCert\dfg.cer");

            /// Серверный сертификат.
            /// BasicHttpBinding не умеет делать negotiate, поэтому 
            /// задаем сертификат явно.
            coll = store.Certificates.Find(X509FindType.FindByThumbprint, serverCertThumbprint, false);
            
            /*
            if (coll.Count == 0)
            {
                throw new FileNotFoundException(string.Format("Сертификат сервера не найден. Отпечаток {0}", serverCertThumbprint));
            }*/

            //X509Certificate2 serverCert = coll[0];
            X509Certificate2 serviceCert = new X509Certificate2();
            serviceCert.Import(@"C:\MyCert\dfg.cer");  


И все !
Ошибка таже:
UserPostedImage

Почему так ? .NET SDK установлено:
UserPostedImage

Помогите пожалуйста.

UPD !
Очень странную вещь обнаружил - имеется папка Programm Files и Programm Files (86).
Почему-то папка Crypto Pro создана И ТАМ И ТАК. Но состав папок разный:

В Programm Files:
- .NET
- CSP

а в Programm Files (86):
- .NET
- .NET SDK
- CSP

Даты создания каталогов - одни и теже, вчерашним числом, когда я и поставил Крипто Про

Выходит, что программа не может найти .NET SDK - потому, что ищет не там ! Но почему он ищет в другом месте и зачем были созданы каталоги Crypto Pro в разных Programm Files ?

Устанавливал следующие версии файлов:
csp-x64-kc2-eng.msi
netsdk-x64-eng.msi
net-x64-eng.msi

Отредактировано пользователем 20 января 2015 г. 16:49:38(UTC)  | Причина: Не указана

Offline ESofter  
#6 Оставлено : 20 января 2015 г. 17:42:19(UTC)
ESofter

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

Группы: Участники
Зарегистрирован: 19.01.2015(UTC)
Сообщений: 67

Сказал(а) «Спасибо»: 5 раз
Поблагодарили: 2 раз в 2 постах
Итак. Переустановил КриптоПро - затем перезагрузил компьютер.
Установил все заново - перезапустил компьютер.

Открываю VS с правами админа. Ошибка та же.

Попросил коллегу проверить - у него вроде заработало... Завалилось на сертификате, но это, видимо уже другой вопрос. Пока не знаю что делать, переустановка не помогла.
Offline Максим Коллегин  
#7 Оставлено : 20 января 2015 г. 18:30:05(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,377
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 706 раз в 614 постах
соберите лог alarm info
Знания в базе знаний, поддержка в техподдержке
Offline Максим Коллегин  
#8 Оставлено : 20 января 2015 г. 18:32:02(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,377
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 706 раз в 614 постах
и попробуйте запустить с framework 3.5
Знания в базе знаний, поддержка в техподдержке
thanks 1 пользователь поблагодарил Максим Коллегин за этот пост.
ESofter оставлено 20.01.2015(UTC)
Offline ESofter  
#9 Оставлено : 20 января 2015 г. 20:56:54(UTC)
ESofter

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

Группы: Участники
Зарегистрирован: 19.01.2015(UTC)
Сообщений: 67

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

В общем. Использовал корпоративный еТокен с серверным сертификатом. И кажется заработало. Запрос начал отправлятся в СМЭВ.

Вот только... Вы не знаете, а http://188.254.16.92:9999/gateway/services/SID0003029 живой ?
У меня WCF ругается, что на том конце нас никто не слушает...

У меня два предположения
- либо сервис переехал на другой IP/Port, либо этот сервис доступен только из под VPN. Я тут читал в документации, что для доступа к СМЭВ требуется подать заявку на доступ и настроить Vipnet.
- Однако, как я понял, имеются и публичные сервисы - доступные всем без регистрации. Соотвественно, возможно данный адрес не публичный.

Вы не знаете ?

Мне нужно либо изменить IP/Port на верный, либо переделывать на другой сервис, другую WSDL - который доступен для публичного доступа.
Offline ESofter  
#10 Оставлено : 20 января 2015 г. 21:08:43(UTC)
ESofter

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

Группы: Участники
Зарегистрирован: 19.01.2015(UTC)
Сообщений: 67

Сказал(а) «Спасибо»: 5 раз
Поблагодарили: 2 раз в 2 постах
Через этот сайт нашел ссылку на сервис
http://smev.gosuslugi.ru/portal/services.jsp#!/F

Искал по идентификатору сервиса. Сервис переехал сюда:
http://smev-mvf.test.gosuslugi.ru:7777/gateway/services/SID0003029//wsdl

Отредактировано пользователем 20 января 2015 г. 21:13:16(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.