Добрый день!
У меня сформирован WCF Client для нужного веб-сервиса.
Пытаюсь подписать сообщение в соответствии со СМЭВ.
Как показано в примере к .NET SDK.
Вот выдержки из моего файла конфигурации app.config:
<extensions>
<bindingElementExtensions>
<add name="SMEVTextMessageEncoder" type="CryptoPro.Sharpei.ServiceModel.SMEVMessageEncodingElement, CryptoPro.Sharpei.ServiceModel, Version=1.4.0.1, Culture=neutral, PublicKeyToken=473b8c5086e795f5"/>
</bindingElementExtensions>
</extensions>
<customBinding>
<binding name="customSmevBinding">
<security defaultAlgorithmSuite="BasicGostObsolete"
allowSerializedSigningTokenOnReply="true"
authenticationMode="MutualCertificateDuplex"
includeTimestamp="false"
messageProtectionOrder="SignBeforeEncrypt"
messageSecurityVersion="WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10">
<localClientSettings detectReplays="false" />
<localServiceSettings detectReplays="false" />
</security>
<SMEVTextMessageEncoder/>
<httpTransport />
</binding>
</customBinding>
<endpointBehaviors>
<behavior name="clientBehavior">
<clientCredentials>
<clientCertificate findValue="07 ad b0 80 8e 68 07 e6 9b 16 a6 cc 2d 33 27 37 49 d9 2b 81" <!-- тестовый сертификат
x509FindType="FindByThumbprint"
storeLocation="CurrentUser"
storeName="My"/>
<serviceCertificate>
<!--storeLocation="LocalMachine" -->
<defaultCertificate findValue="07 ad b0 80 8e 68 07 e6 9b 16 a6 cc 2d 33 27 37 49 d9 2b 81" <!-- сертификат мой же, поскольку на стороне веб-сервиса еще не реализована возможность подписи ответа на запрос.
x509FindType="FindByThumbprint"
storeLocation="CurrentUser"
storeName="My"/>
<authentication
certificateValidationMode="ChainTrust"
revocationMode="Offline" />
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
<endpoint address="http://46.32.75.133:8888/reimbursement/ws/DataExporterService"
binding="customBinding"
bindingConfiguration="customSmevBinding"
behaviorConfiguration="clientBehavior"
contract="DataExporter.DataExporterPortType"
name="DataExporterPort">
</endpoint>
При попытке отправить запрос сервису появляется исключение (см. вложение) с текстом: "Ошибка идентификации входящего сообщения. Удаленная сторона не указала DNS-имя, поэтому нет соответствия DNS-имени "46.32.75.133". Это может быть вызвано отсутствием DNS-имени или CN-имени в различающемся имени сертификата X.509 удаленной стороны.".
Слежу за отправкой SOAP при помощи программы WireShark. Если отключить SMEVTextMessageEncoder, то запросы уходят на сервер нормально (и я вижу входящие и исходящие пакеты с помощью WireShark), но стоит только включить вышеописанные настройки, то пакеты перестают уходить, т.е. получается, что исключение возникает до момента передачи пакета на сервер.
Подскажите в чем может быть проблема.
Error.jpg
(41kb) загружен 8 раз(а).