2

我们有使用 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 客户端呢?我们使用相同的证书吗?我们是否必须在安装客户端时安装此证书?位在这里缠绕在车轴上,如果有人能帮忙,可以用一个罐子来解释。

4

1 回答 1

4

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

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

于 2011-09-19T20:48:57.453 回答