2009-05-27 53 views
0

我已经设置了一个使用netTcpBinding上的传输安全性的WCF服务。用于服务安全性的证书由我们为开发创建的CA签署。与匿名客户端的服务和证书混淆

有人可以解释它是如何工作的,我的匿名客户端可以连接并与服务进行通信,而无需在本地安装相同的CA?我对证书相当陌生,并且假设必须在本地安装CA才能够从服务中解密数据。

服务和客户端都在Windows机器上,客户端是Windows Forms .NET 3.5应用程序。

回答

1

嗯,有两个部分组成的方程:

  • 你可以有哪些服务用来验证自己到客户端(证明它是它自称是服务)
  • 一个 服务器证书
  • 你可以有一个客户证书,客户端需要证明其身份的服务器

哪一个是你感兴趣的?通常,如果您有服务器/服务证书,客户端将“知道”服务器的公钥(它可以安装在客户端的证书存储库中,例如通过安装程序或通过下载和安装),或者在创建代理时询问服务器的证书,并将服务器的公钥存储在本地客户机配置文件中供以后使用。然后,该配置将再次与客户端上的应用程序一起安装。

如果客户端想要根据服务对自身进行身份验证,则肯定需要在客户端机器的cert store上本地安装其客户端证书。

我建议查看WCF Security Guidance - 这是一个很好的资源,他们可以解释如何做比我更好的某些场景!

在所有人都在同一个域中的Windows环境中,这似乎有点矫枉过正 - 为什么不使用内置的Windows提供的凭据呢?我会想,这会容易得多。

Marc

+0

感谢您的回复! 我应该清楚,这是目前正在工作,但我们试图弄清楚如何,因为我们没有看到我们的CA在客户端。也许ClickOnce将其添加到配置? 我们只对服务器证书感兴趣。客户端通过ClickOnce部署,用户通过我们的应用程序登录。 相信我,我希望我们可以使用Windows凭据。不幸的是,我们的许多网站/客户端不在域中,每个客户端终端可以在一天内容纳几个用户,并且只有一个用户登录到Windows。 – 80bower 2009-05-27 18:40:45