通过HTTPS进行消息级加密的WCF服务

时间:2014-08-04 12:20:35

标签: wcf encryption message

我已经看过一两个问题,但没有明确的答案。我有客户要求使用Message Encryption和HTTPS实现基于WCF的客户端/服务器解决方案。据我所知,WCF不支持此标准,选项包括使用Message Encryption的HTTP,不使用Message Encryption的HTTPS或使用Message Credentials的HTTPS。

这些都不会满足客户的要求。我可以控制服务和基于桌面的客户端。该服务托管在我的位置,客户通过互联网访问它。

我已经挖了几天(和夜晚:()尝试自定义绑定等等,但每当我尝试将消息加密与Https结合使用时,我遇到了这个错误:

“绑定包含SymmetricSecurityBindingElement和安全传输绑定元素。不支持此类绑定的策略导出。”

我更愿意使用用户名/密码进行身份验证,但我准备使用客户端证书(如果可以的话)。到目前为止,我还没有找到WCF可以接受的任何组合。

有没有办法实现这个目标,还是我只是在浪费时间?我很乐意快速回答,因为我的客户截止日期非常接近!

谢谢!

2 个答案:

答案 0 :(得分:0)

根据thisboth绑定仅支持NetMsmqBinding安全模式(意味着消息和传输),我猜测,这不是你的选择。您的客户是否恰好是NSA? (只是想知道为什么有人需要将他们的通信加密两次)。

答案 1 :(得分:0)

好的,我找到了解决方案......

使用IMessageInspector我拦截了传入和传出的消息,以便对它们进行加密和解密。加密使用对称技术 - 最好是因为非对称只允许加密短字符串并且非常慢。

缺点是两端都需要拥有证书的私钥 - 因此需要在客户端和服务器上安装证书(或者密钥可以放在配置中)。这对我有用,因为用户数量有限,并且都在IT部门的控制之下。

如果我有更多时间,我会考虑使用不同的证书设置第二个SSL连接,纯粹是为了处理证书协商并避免将证书放在客户端计算机上。使用SslStream是可能的,但我不确定是否可以访问用于我自己的加密的密钥信息,或者这是否在SslStream类中私有保存。

现在我很高兴在截止日期前让它工作(仅限于:))...