【发布时间】:2010-12-06 22:56:37
【问题描述】:
我有一个 WCF 服务和客户端,将部署到几家公司(数百家)。有些公司会在他们的网络中运行软件,有些公司会通过 Internet 运行(WCF 服务器在办公室,WCF 客户端在另一个)。
我们想要加密 WCF 服务器和客户端之间的通信。我们不需要使用 WCF 安全性对 cient / 订阅者进行身份验证,因为我们有自己的用户名/密码登录,客户端将使用它登录服务器。
- 我们不能依赖 Windows 身份验证,因为一些用户将通过 Internet 运行它,而且 WCF 服务器可能与 WCF 客户端不在同一个域中。
- 如果我们使用“真实”证书*,运行该软件的公司将不得不从 CA 购买证书并安装它,然后配置我们的软件以使用它,但这对于大多数公司来说太复杂了。
- 我们可以在安装 WCF 服务器的过程中自动创建证书,但是我们必须自动将其安装到证书存储中,并以某种方式自动授予 IIS 读取证书的权限。这比我们想象的要复杂。
简而言之,我们想要一个简单的解决方案,其中加密仅基于共享机密,在我们的例子中是用户登录时使用的用户名/密码。我明白这不会提供最好的可用加密,但我们愿意牺牲一些安全性以使软件更易于部署。
这可能吗?
*“真实”证书是指从证书颁发机构购买的证书,而不是我自己创建/自签名的证书。
【问题讨论】:
-
您的第三个场景(脚本安装)非常好。为什么你认为它很复杂?安全性本质上是一个复杂的方面。使用 msbuild 或 powershell 通过良好的安装文档来实现您的目标。
-
> 为什么你认为它很复杂?安全性本质上是一个复杂的方面。那你在说什么?复杂不复杂? :) 另外,MSBuild 是如何出现在这里的?在我们的软件编译过程中,我们无法真正自动生成 SSL 证书。自动生成的证书必须对每个客户都是唯一的。
标签: wcf encryption certificate message