我已阅读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();
答案 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)