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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline vladikKBR  
#1 Оставлено : 19 сентября 2017 г. 14:32:59(UTC)
vladikKBR

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

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

Сказал(а) «Спасибо»: 4 раз
Здравствуйте. При попытке соединиться с WCF сервисом получаю такое исключение.

Код:

System.NotSupportedException: Crypto algorithm  not supported in this context.

Server stack trace: 
   at System.ServiceModel.Security.SendSecurityHeader.StartSignature()
   at CryptoPro.Sharpei.ServiceModel.CPSendSecurityHeader.StartSignature()
   at System.ServiceModel.Security.SendSecurityHeader.StartSecurityApplication()
   at System.ServiceModel.Security.SecurityAppliedMessage.OnWriteMessage(XmlDictionaryWriter writer)
   at System.ServiceModel.Channels.BufferedMessageWriter.WriteMessage(Message message, BufferManager bufferManager, Int32 initialOffset, Int32 maxSizeQuota)
   at System.ServiceModel.Channels.TextMessageEncoderFactory.TextMessageEncoder.WriteMessage(Message message, Int32 maxMessageSize, BufferManager bufferManager, Int32 messageOffset)
   at System.ServiceModel.Channels.HttpOutput.SerializeBufferedMessage(Message message, Boolean shouldRecycleBuffer)
   at System.ServiceModel.Channels.HttpOutput.Send(TimeSpan timeout)
   at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.SendRequest(Message message, TimeSpan timeout)
   at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
   at System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.Request(Message message, TimeSpan timeout)
   at System.ServiceModel.Security.SecuritySessionSecurityTokenProvider.DoOperation(SecuritySessionOperation operation, EndpointAddress target, Uri via, SecurityToken currentToken, TimeSpan timeout)
   at System.ServiceModel.Security.SecuritySessionSecurityTokenProvider.GetTokenCore(TimeSpan timeout)
   at CryptoPro.Sharpei.ServiceModel.CPSecuritySessionSecurityTokenProvider.GetTokenCore(TimeSpan timeout)
   at System.IdentityModel.Selectors.SecurityTokenProvider.GetToken(TimeSpan timeout)
   at System.ServiceModel.Security.SecuritySessionClientSettings`1.ClientSecuritySessionChannel.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.CallOpenOnce.System.ServiceModel.Channels.ServiceChannel.ICallOnce.Call(ServiceChannel channel, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce(TimeSpan timeout, CallOnceManager cascade)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)


Судя по тексту - имя алгоритма почему-то нульное.

Конфигурация binding-a:

Код:

                var binding = new WSHttpBinding();
                binding.MaxBufferPoolSize = 52428800;
                binding.MaxReceivedMessageSize = 52428800;
                binding.SendTimeout = TimeSpan.FromMinutes(1);
                binding.OpenTimeout = TimeSpan.FromMinutes(1);
                binding.CloseTimeout = TimeSpan.FromMinutes(1);
                binding.ReceiveTimeout = TimeSpan.FromMinutes(10);
                binding.Security.Mode = SecurityMode.Message;
                binding.Security.Message.NegotiateServiceCredential = false;
                binding.Security.Message.ClientCredentialType = MessageCredentialType.Certificate;
                binding.Security.Message.AlgorithmSuite = CryptoPro.Sharpei.ServiceModel.GostAlgorithmSuite.BasicGost;
                binding.MaxReceivedMessageSize = 2147483647;
                binding.ReaderQuotas = new System.Xml.XmlDictionaryReaderQuotas()
                {
                    MaxArrayLength = 16384,
                    MaxDepth = 32,
                    MaxBytesPerRead = 4096,
                    MaxNameTableCharCount = 16384,
                    MaxStringContentLength = 2147483647
                };;


Сертификаты вроде бы в порядке, ГОСТ-овские, по крайней мере ничего подозрительного не видно.
Версия CryptoPro .NET Server 1.0.6397.0, версия .NET - 4.7
Подскажите пожалуйста, в чем еще может быть дело?

Update:
С CryptoPro .NET Server 1.0.5913.0 похоже все работает...

Отредактировано пользователем 19 сентября 2017 г. 15:16:13(UTC)  | Причина: Не указана

Offline Артём Макаров  
#2 Оставлено : 20 сентября 2017 г. 8:58:33(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 54 раз в 53 постах
Добрый день.

Проверьте, что в References проекта добавлена сборка CryptoPro.Sharpei.ServiceModel45.dll, а не CryptoPro.Sharpei.ServiceModel.dll.
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Артём Макаров за этот пост.
vladikKBR оставлено 20.09.2017(UTC)
Offline vladikKBR  
#3 Оставлено : 20 сентября 2017 г. 10:26:24(UTC)
vladikKBR

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

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

Сказал(а) «Спасибо»: 4 раз
Большое спасибо, помогло.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.