带有签名证书的WCF net.tcp

时间:2014-09-09 09:17:58

标签: c# wcf ssl tcp

如果我从受信任的CA获得了SSL证书,在通过net.tcp连接到WCF服务时,是否仍需要将SSL证书导入客户端计算机?

当我使用wsdualhttpbinding时,我可以通过https进行连接。现在我切换到net.tcp并添加了

   <bindings>
      <netTcpBinding>
        <binding name="InsecureTcp" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
          <security mode="TransportWithMessageCredential">
            <message clientCredentialType="Certificate"/>
          </security>
        </binding>
      </netTcpBinding>
    </bindings>

到web.config文件。

我可以通过https访问WSDL文件但是当我尝试从我的客户端连接时,我收到以下错误:

其他信息:未提供客户端证书。在ClientCredentials中指定客户端证书。

我尝试将自定义行为添加到客户端配置文件中:

 <behaviors>
  <endpointBehaviors>
    <behavior name="CustomBehavior">
      <clientCredentials>
        <clientCertificate findValue="example.com" x509FindType="FindBySubjectName"
          storeLocation="LocalMachine" storeName="My" />
      </clientCredentials>
    </behavior>
  </endpointBehaviors>
</behaviors>

但这仅适用于将证书导入我的本地证书存储区......

1 个答案:

答案 0 :(得分:3)

我希望我明白你的观点 - 你不想使用客户端证书进行身份验证?然后修改<security mode="TransportWithMessageCredential"> <message clientCredentialType="Certificate"/> </security> clientCredentialType为以下之一: http://msdn.microsoft.com/en-us/library/system.servicemodel.httpclientcredentialtype(v=vs.110).aspx

如果需要,您可以使用多种身份验证机制: http://msdn.microsoft.com/de-de/library/ms731316(v=vs.110).aspx