5

我已经阅读了 MSDN 提供的文档以及该站点上的其他一些帖子。但是,在使用带有证书的消息安全性时,WCF(特别是 NetTcpBinding)是否会真正加密消息内容仍然有点不清楚。有人有确切消息么?

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

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

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

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

如果真正的消息级加密是可能的(使用 NetTcpBinding)它是如何在代码中完成的?我相信这与算法套件有关,虽然我不确定,

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

3 回答 3

6

不确定这是否完全回答了您的问题,但根据这篇文章TCP 默认加密。

NetTcpBinding 默认是安全的。具体来说,调用者必须提供 Windows 凭据以进行身份​​验证,并且所有消息数据包都通过 TCP 协议进行签名和加密。

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

默认情况下,所有安全 WCF 绑定都会对消息进行加密和签名。您不能出于传输安全的目的禁用此功能,但是,出于消息安全的考虑,您可能希望出于调试目的禁​​用此功能,或者在使用 IPSec 等替代保护方法时禁用此功能。

于 2012-07-10T22:50:12.603 回答
5

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

这是更多信息(您可能已经阅读过)WCF NetTcpBinding 安全性 - 它是如何工作的?

于 2012-07-10T22:47:29.223 回答
0

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

消息安全性使消息安全,无论您使用何种传输方式来传输消息,并且安全上下文直接嵌入在消息中。

MSDN 文章

于 2015-07-22T19:41:48.897 回答