我有一个 WCF 服务和客户端,它将部署到几家公司(数百家)。一些公司将在他们的网络中运行该软件,而一些公司将通过 Internet 运行它(WCF 服务器在办公室,WCF 客户端在另一个)。
我们要加密 WCF 服务器和客户端之间的通信。我们不需要使用 WCF 安全性对 cient / 订阅者进行身份验证,因为我们有自己的用户名/密码登录,客户端将使用该用户名/密码登录服务器。
- 我们不能依赖 Windows 身份验证,因为一些用户会通过 Internet 运行它,而且 WCF 服务器可能与 WCF 客户端不在同一个域中。
- 如果我们使用“真实”证书*,运行该软件的公司将不得不从 CA 购买证书并安装它,然后配置我们的软件以使用它,但这对大多数人来说太复杂了。
- 我们可以在安装 WCF 服务器的过程中自动创建证书,但是我们必须自动将其安装到证书存储中,并以某种方式自动授予 IIS 读取证书的权限。这比我们想要的要复杂。
简而言之,我们想要一个简单的解决方案,其中加密仅基于共享密钥,在我们的例子中是用户登录时使用的用户名/密码。我明白这不会提供最好的可用加密,但我们愿意交换一些安全性以使软件更易于部署。
这可能吗?
*对于“真实”证书,我的意思是从证书颁发机构购买的证书,而不是我自己创建/自签名的证书。