Статус: Участник
Группы: Участники
Зарегистрирован: 02.12.2011(UTC) Сообщений: 12
|
Столкнулись с проблемой, что надо подключиться к Web-сервису, который работает в режиме BasicHttpBinding, но требуется ГОСТовую подпись.
Для BasicHttpBinding в отличие от WsHTTPBinding обязательно требуется сертификат сервиса (ClientsCredential.ServiceCertificate.SetDefaultCertificate). Там я указываю ГОСТ-овый сертификат. При этом при формировании SOAP запроса WCF выпадает в exception - The public Key is not RSA key. Как я понимаю это происходит именно из-за сервисного сертификата. Т.к. если там поставить RSA-ыйный сертификат, то происходит другое исключение:
The token's crypto collection does not support algorithm 'urn:ietf:params:xml:ns:cpxmlsec:algorithms:transport-gost2001'.
Как я понимаю это из-за того, что стоит AlgorithmSuite - BasicGost - и при попытке работать с RSA сертификатом выпадает такая ошибка.
Существует ли какая-то возможность работать с сервисом в BasicHTTPBinding режиме, но с подписью CryptoPro?
|
|
|
|
Статус: Активный участник
Группы: Администраторы, Участники Зарегистрирован: 28.04.2010(UTC) Сообщений: 140 Откуда: Крипто-Про Поблагодарили: 15 раз в 14 постах
|
Добрый день,
Возможно прислать описание используемого binding'а ? Тогда можно будет воспроизвести ситуацию у нас.
Известно, что BasicHttpBinding ни в каком security mode не работает с clientCredentials : Certificate.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 02.12.2011(UTC) Сообщений: 12
|
khomenko написал:Добрый день, Известно, что BasicHttpBinding ни в каком security mode не работает с clientCredentials : Certificate.
Так именно это и нужно - подписанный запрос SOAP в режиме BasicHttpBinding. Собственно вот сам пример (если поставить сертификаты не ГОСТовых - то все работает - естественно подпись RSA и убрать AlgorithmSuite): BasicHttpBinding myBinding = new BasicHttpBinding("SmevUnifoServiceSOAP"); myBinding.Security.Mode = BasicHttpSecurityMode.Message; myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None; myBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate; myBinding.Security.Message.AlgorithmSuite = CryptoPro.Sharpei.ServiceModel.GostAlgorithmSuite.BasicGost; EndpointAddress ea = new EndpointAddress("http://xx.xx.xx.xx:7777/gateway/services/SID0003026?wsdl"); SMEVService.SmevUnifoServiceClient cln = new SMEVService.SmevUnifoServiceClient(myBinding, ea); cln.Endpoint.Contract.ProtectionLevel = System.Net.Security.ProtectionLevel.Sign; cln.ClientCredentials.ClientCertificate.SetCertificate(StoreLocation.CurrentUser, StoreName.My, X509FindType.FindBySubjectName, "MYCERTNAME"); cln.ClientCredentials.ServiceCertificate.SetDefaultCertificate(StoreLocation.CurrentUser, StoreName.AddressBook, X509FindType.FindBySubjectName, "xx.xx.xx.xx"); cln.ClientCredentials.ServiceCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.None; .... (опускаю подробности - здесь заполнение полей запроса) // вызов самого сервиса - здесь и происходит падение в exception SMEVService.UnifoTransferMsg tran_resp = cln.UnifoTransferMsg(tran_mes.UnifoTransferMsg);
|
|
|
|
Статус: Активный участник
Группы: Администраторы, Участники Зарегистрирован: 28.04.2010(UTC) Сообщений: 140 Откуда: Крипто-Про Поблагодарили: 15 раз в 14 постах
|
Замечание: BasicHttpBinding работает с clientCredentials : Certificate в режимах безопасности: Transport и Transport With Message Credentials
|
|
|
|
Статус: Активный участник
Группы: Администраторы, Участники Зарегистрирован: 28.04.2010(UTC) Сообщений: 140 Откуда: Крипто-Про Поблагодарили: 15 раз в 14 постах
|
BasicHttpBinding в режиме безопасности Message с clientCredentials : Certificate не работает с ГОСТом.
Почему не использовать wsHttpBinding ?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 02.12.2011(UTC) Сообщений: 12
|
wsHttpBinding не поддерживает поставщик сервиса... это их требование...
|
|
|
|
Статус: Активный участник
Группы: Администраторы, Участники Зарегистрирован: 28.04.2010(UTC) Сообщений: 140 Откуда: Крипто-Про Поблагодарили: 15 раз в 14 постах
|
Как вариант можно попробовать построить Custom Binding аналогичный BasicHttpBinding.
Про поддержку со стороны Sharpei сейчас немогу ничего сказать. BasicHttpBinding + Message security + GOST не правился, потому что им фактически никто не пользовался.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 02.12.2011(UTC) Сообщений: 12
|
Понятно, будем думать... А в планах такое есть? Как я понимаю все gosuslugi так будут работать - поэтому спрос должен быть...
|
|
|
|
Статус: Активный участник
Группы: Администраторы, Участники Зарегистрирован: 28.04.2010(UTC) Сообщений: 140 Откуда: Крипто-Про Поблагодарили: 15 раз в 14 постах
|
Есть принципиальные причины, почему BasicHttpBinding + Message security не работает на ГОСТе. Скорей всего и CustomBinding не поможет.
В сценарии требуется шифрование + подпись сообщения ?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 02.12.2011(UTC) Сообщений: 12
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close