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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline D!m@n  
#1 Оставлено : 25 марта 2011 г. 20:53:39(UTC)
D!m@n

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

Группы: Участники
Зарегистрирован: 28.10.2008(UTC)
Сообщений: 40
Мужчина
Откуда: Москва

Добрый день!

Дано: Windows XP SP3, CryptoPro CSP 3.6 R2 последней версии (срок действия лицензии - неограничен), Visual Studio 2008 Pro, решение "Certif" из архива WCF.zip Sharpei SDK и 2 действующих криптопрошных сертификата.

В примере Certif заменил только ссылки на сертификаты, ничего больше не менял. Скомпилировался, запустил Certif.SelfHost.exe - служба стартовала.
Запустил клиента - при попытке обратиться к службе возникает исключение типа System.ServiceModel.Security.SecurityNegotiationException.
Вложенное исключение - System.ServiceModel.FaultException "Запрос маркера безопасности не удалось удовлетворить из-за сбоя проверки подлинности."

Цитата:
Server stack trace:
в System.ServiceModel.Security.IssuanceTokenProviderBase`1.DoNegotiation(TimeSpan timeout)
в System.ServiceModel.Security.SspiNegotiationTokenProvider.OnOpen(TimeSpan timeout)
в System.ServiceModel.Security.TlsnegoTokenProvider.OnOpen(TimeSpan timeout)
в System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen(TimeSpan timeout)
в System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
в System.ServiceModel.Security.CommunicationObjectSecurityTokenProvider.Open(TimeSpan timeout)
в System.ServiceModel.Security.SecurityUtils.OpenTokenProviderIfRequired(SecurityTokenProvider tokenProvider, TimeSpan timeout)
в System.ServiceModel.Security.SymmetricSecurityProtocol.OnOpen(TimeSpan timeout)
в System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen(TimeSpan timeout)
в System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
в System.ServiceModel.Channels.SecurityChannelFactory`1.ClientSecurityChannel`1.OnOpen(TimeSpan timeout)
в System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
в System.ServiceModel.Security.SecuritySessionSecurityTokenProvider.DoOperation(SecuritySessionOperation operation, EndpointAddress target, Uri via, SecurityToken currentToken, TimeSpan timeout)
в System.ServiceModel.Security.SecuritySessionSecurityTokenProvider.GetTokenCore(TimeSpan timeout)
в CryptoPro.Sharpei.ServiceModel.CPSecuritySessionSecurityTokenProvider.GetTokenCore(TimeSpan timeout)
в System.IdentityModel.Selectors.SecurityTokenProvider.GetToken(TimeSpan timeout)
в System.ServiceModel.Security.SecuritySessionClientSettings`1.ClientSecuritySessionChannel.OnOpen(TimeSpan timeout)
в System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
в System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan timeout)
в System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
в System.ServiceModel.Channels.ServiceChannel.CallOpenOnce.System.ServiceModel.Channels.ServiceChannel.ICallOnce.Call(ServiceChannel channel, TimeSpan timeout)
в System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce(TimeSpan timeout, CallOnceManager cascade)
в System.ServiceModel.Channels.ServiceChannel.EnsureOpened(TimeSpan timeout)
в System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
в System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)
в System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
в System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]:
в System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
в System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
в ICalculator.Add(Double n1, Double n2)
в CalculatorClient.Add(Double n1, Double n2) в C:\Documents and Settings\gor_da\Рабочий стол\WCF\Certif\Client\generatedProxy.cs:строка 67
в CryptoPro.Sharpei.WCF.Samples.Client.Main() в C:\Documents and Settings\gor_da\Рабочий стол\WCF\Certif\Client\Program.cs:строка 35
в System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
в System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
в System.Threading.ThreadHelper.ThreadStart_Context(Object state)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
в System.Threading.ThreadHelper.ThreadStart()


Далее меняю ссылки на сертификаты на 2 других сертификата, не гостовских, и убираю algorithmSuite="BasicGost" из настроек биндинга.
И - вуаля - служба калькулятора успешно вызывается клиентом.


Вопросы:
1. В чем может быть ошибка и как ее исправить?
2. Правильно ли я понимаю, что для режима безопасности "Message" не требуется серверная лицензия КриптоПро?

Заранее спасибо за ответ!
Offline Челпанов А.  
#2 Оставлено : 28 марта 2011 г. 14:36:43(UTC)
Челпанов А.

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

Группы: Участники
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 390
Мужчина
Откуда: КриптоПро

Поблагодарили: 2 раз в 2 постах
Цитата:
2. Правильно ли я понимаю, что для режима безопасности "Message" не требуется серверная лицензия КриптоПро?

Требуется. Не требуется при
Код:
Security.Message.NegotiateServiceCredential = false

С уважением, Александр.
Offline D!m@n  
#3 Оставлено : 28 марта 2011 г. 17:21:36(UTC)
D!m@n

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

Группы: Участники
Зарегистрирован: 28.10.2008(UTC)
Сообщений: 40
Мужчина
Откуда: Москва

Спасибо, заработало! Applause

Правда, еще пришлось добавить сертификат по умолчанию в clientCredentials, но это как раз так и должно быть:
http://msdn.microsoft.com/en-us/library/system.servicemodel.messagesecurityoverhttp.negotiateservicecredential(VS.90).aspx

Челпанов А. написал:
Цитата:
2. Правильно ли я понимаю, что для режима безопасности "Message" не требуется серверная лицензия КриптоПро?

Требуется. Не требуется при
Код:
Security.Message.NegotiateServiceCredential = false

Отредактировано пользователем 28 марта 2011 г. 17:23:20(UTC)  | Причина: Не указана

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