JavaScript 到 WCF 服务加密

JavaScript to WCF Service encryption

我正在寻找一种在 JavaScript 包和 WCF 服务之间加密数据的好方法。我在底部描述了一种解决方案,但想要更好的解决方案。有没有办法在不购买 SSL 证书的情况下执行此操作,我想要 SSL 数据传输,但不需要 CA?

背景

我有一个 WCF Web 服务,许多 Web 应用程序工具都将连接到该服务。所有工具都将通过服务代码获得批准和注册,然后才能访问该服务。我们正在编写一个基本的 JavaScript 包,用于与要使用的工具的服务进行通信。

进入该服务的数据需要加密,我们不能相信即使是同一工具的其他用户也不会尝试收听数据。

我不想购买 SSL 证书并保持其有效,我希望因为我只允许某些工具访问并且它们使用我的包,所以我可以绕过它。

我找到了一个解决方案,但觉得不够好

在开发过程中将服务器上的密钥硬编码给已批准的工具。当每个工具启动时,它会创建一个新密钥并将其发送到该用户和工具会话的服务器。所有来回的数据都将在这个新密钥上完成。 问题 - 如果工具首次发送其加密的新密钥时有人正在监听,他们可以从其中一个工具中获取硬编码并计算出新密钥怎么办。

public 密钥加密背后的基础知识是您拥有一个 public 密钥和一个私钥。您可以将您的 public 密钥提供给世界上的任何人,他们可以用它加密只有私钥持有者才能解密的消息。

因此您可以在服务中使用一种方法来提供 public 键。您的工具将请求 public 密钥来加密数据并使用它以加密方式与您的服务交换数据。

但请注意,我说的是 "encrypted" 而不是 "secure",SSL 超越了对 HTTP 正文数据的加密,它几乎加密了整个连接。

也证明了身份。服务如何知道你是真的你?

您将如何确定消息没有在您和您的客户之间的某处被拦截和更改? SSL 还提供完整性保护。

我建议您不要重新发明轮子,或者如果您这样做,请认真计划,因为安全性非常重要。 "don't want to" 不是不购买 SSL 证书的好理由。