2012-07-10 103 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