【问题标题】:WCF net.tcp with signed certificate带有签名证书的 WCF net.tcp
【发布时间】:2014-09-09 09:17:57
【问题描述】:

如果我有一个受信任的 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>

但这只能与将证书导入我的本地证书存储区结合使用...

【问题讨论】:

    标签: c# wcf ssl tcp


    【解决方案1】:

    我希望我明白你的意思 - 你不想使用客户端证书进行身份验证?然后修改<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

    【讨论】:

    • 我不需要身份验证。我只是想加密我的 WCF 客户端和服务之间的数据交换...
    • 然后只需将 clientCredentialType 中的 Certificate 替换为 None (因此客户端不会进行身份验证)并为服务器证书添加 servicebehavior。看这里:
    • 抱歉,您能否详细说明一下您对服务行为的含义?客户端或服务器配置?哪些参数?
    • 抱歉,我没那么快找到链接:stackoverflow.com/questions/10870677/…
    • 我认为,选项 1 适合您 - 有帮助吗?
    猜你喜欢
    • 1970-01-01
    • 2012-08-23
    • 2014-05-05
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-05
    相关资源
    最近更新 更多