Я звоню в веб-сервис и мне нужно предоставить сертификат для аутентификации клиента. Но по какой-то причине я не могу понять, почему сертификат не отправляется, когда сервер запрашивает его.
Я пробовал разные предложения на нескольких форумах по поводу всех возможных настроек привязок и поведения. Но что бы я ни пытался при проверке пакета «Сертификат» в Wireshark, часть сертификата остается пустой.
Я создал сертификат для сервера (.cer) и сертификат для клиента (.pfx). См. почтовый файл . На сервере установлен файл .cer, который помечен как действительный сертификат для аутентификации.
Я установил сертификат .pfx в хранилище сертификатов (LocalMachine \ My), пароль - «pvp».
Мой клиентский конфиг (и я уже пробовал несколько разных настроек с одинаковым результатом):
<system.serviceModel>
<client>
<endpoint name="IgjEndpoint"
address="https://tekortkomingen-wvggz.webservices-dbb-acc.igj.nl/"
binding="customBinding"
bindingConfiguration="test"
behaviorConfiguration="IgjEndpointBehaviorConfig"
contract="IGJReference.WebserviceTekortkoming">
</endpoint>
</client>
<bindings>
<customBinding>
<binding name="test">
<textMessageEncoding messageVersion="Soap11WSAddressing10" />
<security authenticationMode="CertificateOverTransport" />
<httpsTransport requireClientCertificate="true" realm="" useDefaultWebProxy="false" />
</binding>
</customBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="IgjEndpointBehaviorConfig">
<clientCredentials>
<clientCertificate storeLocation="LocalMachine" findValue="CN=PVP-SelfSigned-ClientCert-Acc" />
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
Когда я звоню в веб-сервис, я получаю securitynegotiationexception «Не удалось установить sh безопасный канал для SSL / TLS с полномочиями», который, насколько я знаю, является результатом того, что сертификат не был отправлен. Когда я звоню почтальону, это удается.
У меня есть вывод wireshark для почтальона и мое приложение здесь . Посмотрев на вывод почтальона, вы увидите, что запрос сертификата сервера в строке 1877 содержит «PVP-SelfSigned-ClientCert-A cc» в качестве приемлемого ЦС. А в строке 2189 мой клиентский сертификат отправляется на сервер.
Но в выводе wireshark при вызове его из моего приложения вы все равно видите, что запрос сертификата сервера в строке 1745 содержит «PVP-SelfSigned-ClientCert- A cc "как приемлемый CA. Но в строке 1959 нет отправляемого сертификата, однако, когда я смотрю на объект запроса при отладке, я вижу, что сертификат есть в моем объекте запроса в "client.ClientCredentials.ClientCertificate"
Последние 5 дней Я искал в inte rnet возможные причины и решения моей проблемы, но мне пока не повезло со всеми предложенными мною предложениями. Я надеюсь, что кто-то с большим опытом может что-то сделать из вывода Wireshark и помочь мне?
Кроме того, в моем. net коде я просто делаю следующее
var client = new WebserviceTekortkomingClient("IgjEndpoint");
var response = client.RequestTekortkomingen(new RequestTekortkomingen());
На во второй строке происходит сбой соединения.