2012-07-10 78 views
5

我已阅读MSDN提供的文档以及本网站上的其他文章。然而,当使用消息安全w /证书时,WCF(特别是NetTcpBinding)是否实际上将加密消息的内容还有点不清楚。有人有确切消息么?WCF消息安全性是否实际加密消息内容?

例如,你可以指定你的配置都传输和消息凭据:据我可以告诉MSDN文档

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

意味着信息安全简单地依赖于任何用户名/密码或基于证书的认证(协商),但没有具体说明消息本身实际上是在消息级加密的。例如,如果我仅使用基于证书的协商的消息安全性,我不认为消息内容实际上是加密的(即,数据包嗅探器可以拦截原始消息内容 - 即使该服务强制认证) ?

如果真正的消息级加密是可能的(使用NetTcpBinding)它是如何在代码中完成的?我相信这与AlgorithmSuite有关,尽管我不确定,但我不确定,

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

回答

6

不知道这完全回答你的问题,但根据this article TCP通过加密默认。

NetTcpBinding在默认情况下是安全的。具体而言,呼叫者必须提供 Windows凭据进行身份验证,并且所有消息数据包均为 通过TCP协议进行签名和加密。

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

默认情况下,所有的安全WCF绑定将进行加密和签名的消息。 对于传输安全性,您不能禁用此功能,但对于消息 安全性,您可能希望为调试目的而禁用此功能,或者使用 替代保护方法(例如IPSec)。

+0

我决定只闻自己使用Wireshark的数据包,并且我可以证实,这是真的。显然,Windows负责域/可信域通信的加密。谢谢! – 2012-07-11 21:08:24

5

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

这里的一些信息(你可能已经读)WCF NetTcpBinding Security - how does it work?

0

也许是迟到的答案。但是,这是我在MSDN上偶然发现的东西。

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

MSDN Article