我们使用NetTCP运行自托管WCF服务:Transport:WindowsClientCredentialType
// 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客户端?我们使用相同的证书吗?我们是否必须在安装客户端期间安装此证书?在这里缠绕轴的位,可以使用一个可以解释是否有人可以帮助。
答案 0 :(得分:4)
不,您不会在您的客户端上安装带有私钥的证书。你不能把你的私钥给任何人 - 一旦它被泄露,你的安全性就会消失!问题是客户端证书也必须具有私钥,但该私钥必须仅由该单个客户端拥有。这意味着每个客户端都有另一个证书。
通常如何实施?通过本地证书颁发机构向您的客户颁发证书。您的服务将信任该权限,因此所有客户持有您的权限颁发的证书。这是唯一可以控制此操作的方案,否则您需要找到另一种机制来验证您的客户端。