簡體   English   中英

MSMQ。在郵件存儲在驅動器上時保持郵件正文加密

[英]MSMQ. Keep message body encrypted while it is stored on drive

我的項目需要保持所有數據加密,因此MSMQ也需要加密。 但是從文章( https://msdn.microsoft.com/en-us/library/ms704178(v=vs.85).aspx )中可以看出來自私有隊列的消息默認存儲在... \\ MSMQ \\ Storage中\\ p000000x.mq文件。

配置專用隊列時,將其隱私級別設置為“Body”,當我將加密消息發送到此隊列時,我在文本查看器中打開... \\ MSMQ \\ Storage \\ p000000x.mq文件(我使用遠程管理器十六進制編輯器) ),我看到消息的純文本。 它沒有加密。 要發送消息我使用下一個代碼:

message.UseEncryption = true;
message.EncryptionAlgorithm = EncryptionAlgorithm.Rc2;

盡管指定了消息加密,但消息... \\ MSMQ \\ Storage \\ p000000x.mq保持暢通。 見下圖。

在此輸入圖像描述 所以我的問題是:是否有一些內置工具可以在... \\ MSMQ \\ Storage \\ p000000x.mq文件中將郵件加密到驅動器上? 或者我需要在發送到隊列之前加密消息體,然后,當從隊列中查看時,我需要解密它嗎?

非常感謝!

是的,您需要在將數據放入消息之前加密數據,然后在讀取消息后解密數據。

“在數據上使用應用程序加密” http://blogs.msdn.com/b/johnbreakwell/archive/2008/09/12/sending-encrypted-msmq-messages.aspx

由於Microsoft Windows支持多個用戶的文件夾加密†通過NTFS 加密文件系統 (EFS),我能夠利用這種透明加密機制來支持MSMQ存儲文件夾的加密,從而最大限度地減少用戶訪問文件內部數據的表面區域包含* .mq文件中的消息正文和其他可讀文本的片段。

此解決方案是我為私有隊列(沒有域集成)設計的一種替代方案,可以透明地加密,而無需借助應用程序加密消息或應用程序進行自定義加密 它實際上會影響系統上的所有隊列,因為MSMQ實例的整個存儲位置都是加密的。

此解決方案繼續允許使用MSMQ管理單元查看已分配權限的用戶在隊列中的消息,而不會在查看器中看到亂碼或加密的文本。

請注意,此解決方案要求您在磁盤上為MSMQ創建新的存儲位置,因為我在嘗試加密和轉換Windows / System32下的默認存儲位置時遇到了問題。 如果您找到了一種方法,無需創建新文件夾即可使此解決方案正常工作,請在評論中發布。

以下是我使EFS技術用於透明加密的MSMQ解決方案的步驟:
(此信息假定您知道在哪里可以找到Message Queue Manager來配置服務,以及如何執行其他一些基本的Windows管理任務或了解如何執行此操作)

  1. 以管理員身份登錄計算機(假設已安裝消息隊列服務,如果沒有,則從Windows程序和功能部件安裝)。

  2. 記下運行消息隊列服務的用戶帳戶(即網絡服務)。 您將在以下步驟中需要它...

  3. 在磁盤上為msmq創建備用存儲文件夾,例如C:\\ msmq-storage

  4. 將管理員用戶分配給具有“完全控制”權限的新文件夾。

  5. 分配服務用戶帳戶(在步驟2中注明,例如網絡服務)對文件夾的完全控制權限。
    這是非常重要的一步,因為它使MSMQ服務用戶帳戶可以訪問消息文件的加密內容。

  6. 通過轉到其屬性並啟用“加密”復選框來加密文件夾。 該文件夾現在已加密,可能會以不同的顏色顯示。
    您可以通過在計算機上以其他用戶身份登錄並嘗試訪問加密文件的內容來測試此操作,從而導致“拒絕訪問”消息。

  7. 現在使用MSMQ Manager將其存儲位置(所有這些)重新指向剛剛在磁盤上創建的新加密文件夾(並且遠離默認或當前存儲位置)。 此更改將提示您重新啟動該服務。 說是的。

如果您發現此解決方案有任何問題,請在評論中發布。 謝謝。

我在Win 7工作站和Windows 2008 R2 Server上測試了這個解決方案,使用本文中概述的基本.NET應用程序寫入和讀取隊列, 了解如何編寫最小的消息隊列應用程序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM