我正在寻找一种使用 WCF 在客户端和服务器之间加密消息的方法。WCF 提供了许多内置的安全机制来加密客户端和服务器之间的流量,但似乎没有什么符合我的要求。
我不想使用证书,因为它们太复杂了,所以请不要建议我使用证书。我不需要保密,所以我最好使用纯 RSA。
我想要真正的安全性,没有硬编码的密钥或其他东西。我正在考虑在每次服务器启动时生成一个公钥/私钥对。两个密钥都将仅存储在 RAM 中。然后当客户端连接它应该完全像 SSL 一样。就像这里描述的那样。
1.交换某种形式的私钥/公钥对;服务器生成一个密钥对并将私钥保存给自己并与客户端共享公钥(例如,通过 WCF 消息)
2.使用该私钥/公钥对,交换一个共同的共享秘密,例如一个“加密密钥”,它将对称地加密您的消息(并且由于它是对称的,服务器可以使用相同的密钥来解密消息)
3.在您的客户端上设置基础设施(例如,称为行为的 WCF 扩展)以在消息发出之前检查消息并使用您的共享密钥对其进行加密
那将是安全的,不是吗?
是否有任何现有的解决方案来归档我所描述的内容?如果没有,我会自己创建它。我从哪里开始最好?哪种 WCF 自定义行为最好实现?
编辑: 由于这不安全,我将采取以下方法:
安装服务器组件时,将生成新的 X509 证书并自动添加到(服务器的)证书存储区。此生成证书的公共部分将动态包含在客户端设置中。在客户端机器上运行客户端设置时,证书将安装到客户端的 trustet windows 证书存储中。
所以安装产品时没有额外的工作,一切都应该是安全的,就像我们想要的那样。