0

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

我已经尝试了很多示例和示例,并且阅读了很多不同的做事方式,以至于我现在很困惑,不知道该怎么做。

简而言之 - 这是场景......

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

这里的所有通信都位于公司防火墙之后。没有面向公众的东西。

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

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

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

客观地说,有 100 台服务器,每台服务器都在运行一项服务,并且该服务可以被超过 500 个桌面客户端联系到。如果需要,100 台服务器中的任何一台都可以联系每个客户端。

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

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

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

到目前为止 - 我绝对没有运气找到如何做到这一点 - 事实上 - 我现在不确定这是正确的方法,以及我使用 basichttpbinding 的方法是否正确。

我也尝试沿着 net.tcp 而不是 http 的路径 - 但我无法让 Visual Studio 服务参考生成器找到该服务 - 或者如果它总是失败并出现错误。

鉴于我上面概述的场景 - 有人可以告诉我在服务器和客户端之间实现加密通信的正确方法(反之亦然)。我是否可以对我的 basicHttpBindings 进行一些小的更改以使用我的单个服务器或客户端证书启用 ssl,或者我是否正在推动众所周知的 !^&#% 上坡?

任何建议都将受到欢迎,或者提供可能适合我描述的场景的指南链接,以便我可以对这个进行排序。

任何帮助表示赞赏

亲切的问候

杆。

4

1 回答 1

1

你在说什么?您在公司网络中有 100 台服务器和 500 台台式机,但您没有所有这些机器都信任的内部证书颁发机构?在具有 Active Directory 的企业网络中,这应该是一件容易的事,因为每台机器很可能已经拥有自己的证书,如果没有,它可以从本地 Active Directory 证书颁发机构请求证书,它会简单地获得一个,而无需您手动操作证书。它还可以处理证书更新。您只需要使用netsh将该证书分配给每台机器上的正确端口- 我相信这也可以以某种方式自动化。关于如何在企业网络中使用企业 CA、AD 或自动分配证书的问题属于服务器故障.

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

于 2011-09-11T11:42:30.280 回答