
所以我想使用 WCF 進行非同步、斷開連線、跨 Internet 訊息傳遞。可能是由於我在 Apache ActiveMQ 方面的背景,我正在考慮 MSMQ。
在ActiveMQ中,加密佇列連線是一件簡單的事;您只需選擇與代理程式的基於 SSL 的連接,並且您有一個基本的 SSL 層來保護代理程式和客戶端之間的通訊。 (我應該考慮將 WCF 客戶端與 ActiveMQ 代理程式一起使用嗎?)
當我在 Google 上搜尋 MSMQ 加密和 MSMQ SSL 時,我沒有找到任何類似的東西。希望我只是錯過了什麼?
我發現了一些關於加密訊息的半複雜的內容,關於使用 HTTPS 的內容似乎不合時宜,以及需要 Active Directory 的內容 - 但我希望保護所有通信,而不僅僅是消息,我們不喜歡使用HTTPS 作為綁定,因為我們需要斷開連線的操作,而且我們將沒有Active Directory 可以使用。
最好的方法是什麼?
答案1
做http://blogs.msdn.com/motleyqueue/archive/2007/10/06/complementing-msmq-security-with-wcf.aspx有什麼相關性嗎?它似乎暗示了一個似乎是傳輸級別的設置,並且還建議訊息加密。
答案2
好的,終於找到了進行非 Active Directory MSMQ 加密的參考。這是連結。找到文檔後並不難!
這是透過 MSMQ 使用訊息加密但不使用 Active Directory 的方式。
http://msdn.microsoft.com/en-us/library/aa395200.aspx
來自 TFA:
示範
客戶端使用服務的公鑰對訊息進行加密,並使用自己的憑證對訊息進行簽署。從佇列中讀取訊息的服務使用其受信任人員儲存中的憑證對客戶端憑證進行身份驗證。然後,它解密該訊息並將該訊息分派給服務操作。
由於 Windows Communication Foundation (WCF) 訊息作為有效負載攜帶在 MSMQ 訊息正文中,因此正文在 MSMQ 儲存中保持加密狀態。這可以保護訊息免遭不必要的洩漏。請注意,MSMQ 本身並不知道它攜帶的訊息是否已加密。
此範例示範如何將訊息層級的相互身份驗證與 MSMQ 結合使用。證書在帶外交換。對於排隊應用程式來說總是如此,因為服務和客戶端不必同時啟動和運行。
說明 範例用戶端和服務程式碼與 Transacted MSMQ 綁定範例相同,只有一處不同。操作合約上標註了保護級別,表示訊息必須經過簽署和加密。