WCF消息安全性是否实际加密了消息内容?

时间:2012-07-10 22:04:40

标签: c# wcf security certificate nettcpbinding

我已阅读MSDN提供的文档以及本网站上的其他一些帖子。但是,当使用带有证书的消息安全性时,WCF(特别是NetTcpBinding)是否会实际加密消息内容仍然有点不清楚。有人知道吗?

例如,您可以在配置中指定传输和消息凭据:

       <security mode="TransportWithMessageCredential">
          <transport clientCredentialType="Certificate"/>
          <message clientCredentialType="Certificate"
                   negotiateServiceCredential="true" />
       </security>

据我所知,MSDN文档暗示消息安全性仅依赖于用户名/密码或基于证书的身份验证(协商),但没有具体说明消息本身实际上是在消息级别加密的。

例如,如果我只使用消息安全性,基于证书的协商,我认为消息内容实际上并不加密(即,数据包嗅探器可以拦截原始消息内容 - 即使服务强制执行身份验证)?

如果可以进行真正的消息级加密(使用NetTcpBinding),如何在代码中完成?我相信这与AlgorithmSuite有关,虽然我不确定,

binding.Security.Mode = SecurityMode.Message;
binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows;
binding.Security.Message.AlgorithmSuite = new System.ServiceModel.Security.TripleDesSecurityAlgorithmSuite(); 

3 个答案:

答案 0 :(得分:6)

不确定这是否完全回答了您的问题,但默认情况下根据this article TCP加密。

  

NetTcpBinding默认是安全的。具体而言,呼叫者必须提供   用于身份验证和所有消息包的Windows凭据   通过TCP协议签名和加密。

换句话说,如果您自定义配置但使用“无”以外的安全模式,

  

默认情况下,所有安全WCF绑定都将加密和签名邮件。   但是,对于消息,您无法禁用此传输安全性   您可能希望禁用此安全性以用于调试目的或何时   使用另一种保护方法,如IPSec。

答案 1 :(得分:5)

WCF可以使用netTcpBinding加密消息内容。最简单的方法是将diagnostics添加到.config文件并输出svclog文件。您实际上可以使用svctraceviewer.exe工具

查看加密邮件

以下是一些更多信息(您可能已阅读过)WCF NetTcpBinding Security - how does it work?

答案 2 :(得分:0)

也许是迟到的答案。但这是我在MSDN上偶然发现的事情。

  

无论您使用什么传输来传输邮件,邮件安全性都会使邮件安全,并且安全上下文直接嵌入邮件中。

MSDN Article