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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline drmckay  
#1 Оставлено : 21 ноября 2018 г. 7:11:24(UTC)
drmckay

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

Группы: Участники
Зарегистрирован: 20.11.2018(UTC)
Сообщений: 6
Российская Федерация
Откуда: Тюмень

Сказал(а) «Спасибо»: 3 раз
Добрый день!

Делаю СМЭВ сервис, используя WCF-службу на основе примера из SDK, настраиваемый через код. После запуска, при обращении к сервису через браузер появляется такая ошибка:

Код:
ExceptionDetail, возможно созданный параметром IncludeExceptionDetailInFaults=true, имеющим следующее значение:
System.InvalidOperationException: При обращении к расширению экспорта политики возникло исключение.
Расширение: System.ServiceModel.Channels.AsymmetricSecurityBindingElement
Ошибка: Заданный аргумент находится вне диапазона допустимых значений.
Имя параметра: suite ----> System.ArgumentOutOfRangeException: Заданный аргумент находится вне диапазона допустимых значений.
Имя параметра: suite
   в System.ServiceModel.Security.WSSecurityPolicy.CreateAlgorithmSuiteAssertion(SecurityAlgorithmSuite suite)
   в CryptoPro.Sharpei.ServiceModel.CPWSSecurityPolicy.CreateAlgorithmSuiteAssertion(SecurityAlgorithmSuite suite)
   в System.ServiceModel.Security.WSSecurityPolicy.CreateWsspAlgorithmSuiteAssertion(MetadataExporter exporter, SecurityAlgorithmSuite suite)
   в System.ServiceModel.Security.WSSecurityPolicy.CreateWsspAsymmetricBindingAssertion(MetadataExporter exporter, PolicyConversionContext policyContext, AsymmetricSecurityBindingElement binding)
   в System.ServiceModel.Channels.SecurityBindingElement.ExportAsymmetricSecurityBindingElement(AsymmetricSecurityBindingElement binding, MetadataExporter exporter, PolicyConversionContext policyContext)
   в System.ServiceModel.Channels.SecurityBindingElement.ExportPolicy(MetadataExporter exporter, PolicyConversionContext context)
   в System.ServiceModel.Channels.AsymmetricSecurityBindingElement.System.ServiceModel.Description.IPolicyExportExtension.ExportPolicy(MetadataExporter exporter, PolicyConversionContext context)
   в System.ServiceModel.Description.MetadataExporter.ExportPolicy(ServiceEndpoint endpoint, BindingParameterCollection bindingParameters)
   --- Конец внутренней записи изменений стека ExceptionDetail ---
   в System.ServiceModel.Description.MetadataExporter.ExportPolicy(ServiceEndpoint endpoint, BindingParameterCollection bindingParameters)
   в System.ServiceModel.Description.WsdlExporter.ExportEndpoint(ServiceEndpoint endpoint, XmlQualifiedName wsdlServiceQName, BindingParameterCollection bindingParameters)
   в System.ServiceModel.Description.WsdlExporter.ExportEndpoints(IEnumerable`1 endpoints, XmlQualifiedName wsdlServiceQName, BindingParameterCollection bindingParameters)
   в System.ServiceModel.Description.ServiceMetadataBehavior.MetadataExtensionInitializer.GenerateMetadata()
   в System.ServiceModel.Description.ServiceMetadataExtension.EnsureInitialized()
   в System.ServiceModel.Description.ServiceMetadataExtension.HttpGetImpl.InitializationData.InitializeFrom(ServiceMetadataExtension extension)
   в System.ServiceModel.Description.ServiceMetadataExtension.HttpGetImpl.GetInitData()
   в System.ServiceModel.Description.ServiceMetadataExtension.HttpGetImpl.TryHandleDocumentationRequest(Message httpGetRequest, String[] queries, Message& replyMessage)
   в System.ServiceModel.Description.ServiceMetadataExtension.HttpGetImpl.ProcessHttpRequest(Message httpGetRequest)
   в System.ServiceModel.Description.ServiceMetadataExtension.HttpGetImpl.Get(Message message)
   в SyncInvokeGet(Object , Object[] , Object[] )
   в System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
   в System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
   в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
   в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& rpc)
   в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc)
   в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)
   в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc)
   в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc)
   в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)
   в System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc)
   в System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)


При обращении через SOAP UI такая ошибка:

Код:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <s:Fault>
         <faultcode xmlns:a="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">a:InvalidSecurity</faultcode>
         <faultstring xml:lang="ru-RU">Обработка сообщения невозможно, так как действие "http://org.ru/smev/ConfirmPreferenCategPersV1/getSmvKzConfirmPreferenCategPersV1" недопустимо или нераспознано.</faultstring>
      </s:Fault>
   </s:Body>
</s:Envelope>


Сертификаты взял из примера, весь код тоже из примера. В чём может быть дело? Спасибо!
Offline two_oceans  
#2 Оставлено : 21 ноября 2018 г. 13:11:49(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 394 раз в 366 постах
Добрый день.
Навскидку похоже, что использован алгоритм шифросьюта недоступный для сервиса. Фраза "сертификаты из примера" тоже как-то настораживают. Может быть сертификаты не-ГОСТ, а пытаетесь подписать по ГОСТ? Или сертификаты просрочены? Или не установлены корневые? Или не установлен криптопровайдер? Что если получить сертификат в тестовом УЦ? Для начала хотя бы по ГОСТ-2001.

В целом, не очень уловил последовательность Ваших действий. Впечатление, что стучитесь совсем не в ту дверь. Сомневаюсь, что через браузер можно проверить работу сервиса со СМЭВ. Для какой версии СМЭВ предполагается сервис? Обратите внимание, что федеральные органы запланировали вывести из эксплуатации сервисы 2.х до конца года.

1. В версии 2.х сервис принимает обращение от СМЭВ в виде POST запроса. Вы соответственно вместо СМЭВ используете браузер. Если браузер не отправляет никаких POST данных на сервер, то исключение в принципе закономерно (за исключением адреса схемы, он обычно с окончанием ?wsdl). На GET запрос по адресу с ?wsdl как правило должна вернуться XSD схема сервиса в которой указан endpoint для отправки данных. Эта же схема нужна для работы SoapUI. Судя по сообщению SoapUI схема может быть частично недоступна клиенту или сервису либо сервис вообще ничего не ответил. Все части схемы должны быть доступны для сервиса/клиента/браузера/soapUI (кроме может быть пространств имен из стандартов, которые заранее "прошиты" в клиенте), допустимо "перехостить" части схемы на свой сервер и соответственно указать новое расположение в схеме. Допустимо возвращать сервису и клиенту схему с разным расположением. При публикации в СМЭВ это будет сделано Ростелекомом, для собственного теста можно самостоятельно сделать.

Если браузер что-то отправляет, то пожалуйста прикрепите сами данные и HTTP заголовки, проблема может быть и в них.

2. В версии 3.х, как я понимаю, _сервис_ это такой же участник взаимодействия, как и клиент. Сама СМЭВ 3 использует термины "единый сервис" и "вид сведений" вместо обычного _сервис_. Другими словами, на то что называли _сервисом_ в СМЭВ 3.х не приходят никакие соединения со стороны СМЭВ 3, в том числе от браузера, а сам _сервис_ должен по таймеру опрашивать свою очередь запросов обращениями к "единому сервису" СМЭВ и потверждать получение (аналогия - почтовый клиент). Здесь браузер вообще никак не поучаствует, так как соединение исходящее от _сервиса_.

Вариант Б: Вы говорите о сервисе push-уведомлений СМЭВ 3, он реализуется по "старой" схеме пункта 1, но навскидку пространство имен показанное в SoapUI не похоже на push-уведомления.

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

Offline drmckay  
#3 Оставлено : 5 февраля 2019 г. 8:53:45(UTC)
drmckay

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

Группы: Участники
Зарегистрирован: 20.11.2018(UTC)
Сообщений: 6
Российская Федерация
Откуда: Тюмень

Сказал(а) «Спасибо»: 3 раз
Проблема была решена. В проекте использовалась некорректная ссылка на dll библиотеку. Верный путь на моём рабочем компьютере до CryptoPro.Sharpei.ServiceModel45 - "C:\Program Files (x86)\Crypto Pro\.NET SDK\Assemblies\4.0\CryptoPro.Sharpei.ServiceModel45.dll".
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.