承接前文,究竟是哪項配置觸發了 WCF 對傳輸訊息的加密?關鍵在於 <transport> 元素的 protectionLevel 屬性。本節透過將其設為 None 來觀察明文傳輸效果,驗證預設加密行為。
雙端綁定配置皆將 protectionLevel="None",關閉簽名與加密:
<bindings>
<netTcpBinding>
<binding name="tcpWindowsSecurity">
<security mode="Transport">
<transport protectionLevel="None" />
</security>
</binding>
</netTcpBinding>
</bindings>
<bindings>
<netTcpBinding>
<binding name="tcpWindowsSecurity">
<security mode="Transport">
<transport protectionLevel="None" />
</security>
</binding>
</netTcpBinding>
</bindings>
啟動 TcpTrace 監聽後,傳輸封包不再加密,服務回傳的字串內容清晰可見:

圖 1 設定 ProtectionLevel=None 後的明文傳輸抓包結果
結論:預設
ProtectionLevel.EncryptAndSign會對訊息進行加密與簽名;設為None則完全關閉保護,僅適合除錯或受信任內網環境。
作者:玄魂
出處:https://www.cnblogs.com/xuanhun/