Exception: client certificate not provided

I am trying to configure a WCF service with security. I created 2 certificates (for server and client) stored in LocalComputer \ Personal Certificates. My configuration:

Server:

<netTcpBinding> <binding name="defaultBinding"> <security mode="Transport"> <transport clientCredentialType="Certificate"/> </security> </binding> </netTcpBinding> <service name="..." behaviorConfiguration="serviceBehavior"> <endpoint address="..." binding="netTcpBinding" bindingConfiguration="defaultBinding" contract="..."> <identity> <dns value="ClientSide"/> </identity> </endpoint> </service> <behavior name="serviceBehavior"> <serviceCredentials> <serviceCertificate storeLocation="LocalMachine" storeName="My" findValue="ServerSide" x509FindType="FindBySubjectName"/> <clientCertificate> <authentication certificateValidationMode="None" revocationMode="NoCheck"/> </clientCertificate> </serviceCredentials> <behavior> 

Client:

 <netTcpBinding> <binding name="defaultBinding"> <security mode="Transport"> <transport clientCredentialType="Certificate"/> </security> </binding> </netTcpBinding> <endpoint name="..." binding="netTcpBinding" bindingConfiguration="defaultBinding" contract="..." behaviorConfiguration="endpointBehavior"> <identity> <dns value="ServerSide"/> </identity> </endpoint> <behavior name="endpointBehavior"> <clientCredentials> <serviceCertificate> <authentication certificateValidationMode="None" revocationMode="NoCheck"/> </serviceCertificate> <clientCertificate storeLocation="LocalMachine" storeName="My" findValue="ClientSide" x509FindType="FindBySubjectName"/> </clientCredentials> <behavior> 

I get an exception: a client certificate is not provided. Specify a client certificate in ClientCredentials

I tried a lot of tutorials, but none of them work. Any suggestion?

+6
source share
1 answer

The answer is actually in the Exception. You do not have a client certificate. You define a service certificate for a client certificate using this

 <clientCredentials> <serviceCertificate> <authentication certificateValidationMode="None" revocationMode="NoCheck"/> </serviceCertificate> <clientCertificate storeLocation="LocalMachine" storeName="My" findValue="ClientSide" x509FindType="FindBySubjectName"/> </clientCredentials> 

But what you really had to do was define a client certificate for the client

 <system.serviceModel> <behaviors> <endpointBehaviors> <behavior name="endpointBehavior"> <clientCredentials> <clientCertificate storeLocation="LocalMachine" storeName="My" findValue="ClientSide" x509FindType="FindBySubjectName" /> <serviceCertificate> <authentication certificateValidationMode="None" revocationMode="NoCheck" /> </serviceCertificate> </clientCredentials> </behavior> </endpointBehaviors> </behaviors> </system.serviceModel> 

This should at least solve your exception. The client certificate is not provided. Specify a client certificate in ClientCredentials The client certificate is not provided. Specify a client certificate in ClientCredentials .

+6
source

Source: https://habr.com/ru/post/905926/


All Articles