如何保护未在IIS中托管的WCF服务

时间:2011-09-11 09:47:59

标签: wcf ssl certificate basichttpbinding

我一直在寻找保护WCF服务的正确方法,该服务分别托管在Windows服务和WPF桌面应用程序中(2项服务)。

我已经尝试过这么多的例子和样本,所以可能会有不同的做事方式,我现在很困惑,我不知道该怎么做。

在坚果壳中 - 这是场景......

我有一个Windows服务,允许客户端应用程序在公司局域网上连接它。

此处的所有通信都在公司防火墙后面。没有面向公众的东西。

现在 - 我设法使用启用了Windows身份验证的basichttpBinding使一切工作正常。

问题是我需要安全地传输所有内容 - 而不是使用http。

所以 - 我认为简单地生成证书是一个相对简单的任务(不需要是商业证书 - 只需使用MakeCert的开发证书),我可以从文件中加载该证书并保护流量那 - 哦,我有多糟糕!从我读过的内容来看并不简单。

从正确的角度来看 - 每个服务器都有100台运行服务,这项服务可以通过500个桌面客户端进行联系。如果需要,100个服务器中的任何一个都可以联系每个客户端。

此外 - 如果服务器也需要,它们也可以互相联系 - 而且他们经常这样做。

生成600多个证书并将它们加载到每台计算机的证书存储库中并不是一个真正的选择 - 您可以在一两年内对续订进行映像......

我希望能够为服务器生成证书文件,并为客户端生成一个证书文件,并分别为服务器或客户端应用程序的每个实例分发证书文件。当客户端或服务器启动并打开其WCF服务主机时 - 它将使用其路径中的证书来加密流量。我是goign禁用所有撤销检查,因为这些将是来自不受信任来源的证书 - 但正如我提到的那样,这是可以的。

到目前为止 - 我完全没有找到如何做到这一点 - 事实上 - 我现在不确定哪种方法是正确的,如果我使用basichttpbinding的方法是正确的。

我也试过沿着net.tcp的路径而不是http - 但是我无法让visual studio服务引用生成器找到服务 - 或者如果它确实失败了,那么它就失败了。

鉴于我上面概述的情况 - 有人可以告诉我在服务器和客户端之间实现加密通信的正确方法(反之亦然)。我能够对basicHttpBindings进行一些小的更改,以使用我的单个服务器或客户端证书来启用ssl,还是我推动了谚语!^&#%uphill?

任何建议都是最受欢迎的,或者链接指南可能适合我所描述的情况,所以我可以对此进行排序。

任何帮助表示赞赏

亲切的问候

杆。

1 个答案:

答案 0 :(得分:1)

你正在谈论什么?企业网络中有100台服务器,有500台桌面,并且您没有所有这些机器都信任的内部证书颁发机构?在具有Active Directory的公司网络中,这应该只是简单的任务,因为每台计算机很可能已经拥有自己的证书,如果没有,它可以从本地Active Directory证书颁发机构请求证书,它只需一个而不需要手动操作证书。它还可以处理证书更新。您只需要使用netsh将该证书分配给每台计算机上的正确端口 - 我相信这也可以自动化。有关如何在公司网络中使用公司CA,AD或自动化证书分配的问题属于Server Fault

谈论安全性,同时将带有私钥的相同证书分发给600台机器是无稽之谈。任何计算机都能够解密针对任何其他计算机的流量=它与通过HTTP在base64中发送数据并将其称为安全性相同。