help setting up wsHttpBinding WCF service on .net
        Posted  
        
            by manu1001
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by manu1001
        
        
        
        Published on 2010-05-03T11:38:08Z
        Indexed on 
            2010/05/03
            12:18 UTC
        
        
        Read the original article
        Hit count: 866
        
I'm trying to host a WCF service with wsHttpBinding. I created a certificate using makecert and put some lines in web.config.
This is the error that I'm getting:
System.ArgumentException: The certificate 'CN=WCfServer' must have a private key that is capable of key exchange. The process must have access rights for the private key.
On googling up it seems to be some issue with access rights on the certificate file. I used cacls to give read permission to NETWORK SERVICE and also my username but it didn't change anything.
I also went to security settings in the properties of the certificate file and gave full control to NETWORK SERVICE and my username. Again to no avail.
Can you guide me as to what the problem is and what exactly I need to do? I'm really flaky with these certificate things.
Here's my web.config:
<system.serviceModel>
<services>
        <service name="Abc.Service" behaviorConfiguration="Abc.ServiceBehavior">
            <endpoint address="" binding="wsHttpBinding" bindingConfiguration="Abc.BindConfig" contract="Abc.IService">
                <identity>
                    <dns value="localhost"/>
                </identity>
            </endpoint>
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
        </service>
    </services>
<behaviors>
    <serviceBehaviors>
        <behavior name="Abc.ServiceBehavior">
            <serviceMetadata httpGetEnabled="true"/>
            <serviceDebug includeExceptionDetailInFaults="false"/>
            <serviceCredentials>
                <clientCertificate>
                  <authentication certificateValidationMode="PeerTrust"/>
                </clientCertificate>
                <serviceCertificate findValue="WCfServer" storeLocation="CurrentUser" storeName="My" x509FindType="FindBySubjectName" />
            </serviceCredentials>
        </behavior>
    </serviceBehaviors>
</behaviors>
<bindings>
  <wsHttpBinding>
    <binding name="Abc.BindConfig">
      <security mode="Message">
        <message clientCredentialType="Certificate" />
      </security>
    </binding>
  </wsHttpBinding>
</bindings>
</system.serviceModel>
© Stack Overflow or respective owner