【问题标题】:Client Certificate for WCF NetTCP Transport bindingWCF NetTCP 传输绑定的客户端证书
【发布时间】:2011-11-20 05:43:18
【问题描述】:

我们有使用 NetTCP:Transport:WindowsClientCredentialType 运行的自托管 WCF 服务

        // Set Binding Security.
        netTcpBinding.Security.Mode = SecurityMode.Transport;
        netTcpBinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows;
        netTcpBinding.Security.Transport.ProtectionLevel = System.Net.Security.ProtectionLevel.EncryptAndSign;

我们现在需要将这些服务公开给我们自己以外的域,但希望继续自托管而不使用 IIS。因此,我试图将我们切换到证书的 ClientCredentialType。

        // Set Binding Security.
        netTcpBinding.Security.Mode = SecurityMode.Transport;
        netTcpBinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Certificate;
        netTcpBinding.Security.Transport.ProtectionLevel = System.Net.Security.ProtectionLevel.EncryptAndSign;

我之前设置了一个开发环境(很久以前),我们使用 MakeCert 生成一个“虚拟”证书,用于 WCF 的开发目的。但我们已经从 Verisign 购买了证书。我对现在需要发生的事情有点模糊。我可以看到我们使用这个证书来验证我们对客户端的服务,但是我们如何使用证书来验证我们的 .NET 客户端呢?我们使用相同的证书吗?我们是否必须在安装客户端时安装此证书?位在这里缠绕在轴上,如果有人能帮忙,可以用一个罐子来解释。

【问题讨论】:

    标签: wcf certificate net-tcp


    【解决方案1】:

    不,您不会在您的客户端上安装带有私钥的证书。你不能把你的私钥给任何人——一旦它被泄露,你的安全就消失了!问题是客户端证书也必须具有私钥,但该私钥必须仅由该单个客户端拥有。这意味着每个客户端都有另一个证书。

    它通常是如何实现的?通过本地证书颁发机构向您的客户颁发证书。您的服务将信任该机构,因此所有持有您的机构颁发的证书的客户端。这是控制这种情况的唯一方案,否则您需要找到另一种机制来验证您的客户端。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      • 2012-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多