2015-12-17 18 views
5

我的項目需要保留所有數據的加密,所以MSMQ也需要加密。但是從文章(https://msdn.microsoft.com/en-us/library/ms704178(v=vs.85).aspx)中可知,來自專用隊列的消息默認存儲在... \ MSMQ \ Storage \ p000000x.mq文件中。MSMQ。當郵件存儲在驅動器上時保持郵件正文加密

當我配置專用隊列,將其隱私級別設置爲「正文」,並且當我發送加密消息到此隊列時,然後打開文本查看器中的... \ MSMQ \ Storage \ p000000x.mq文件(我使用遠管理器十六進制編輯器),我看到純文本的消息。它沒有加密。要發送消息我用下面的代碼:

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

消息... \ MSMQ \存儲\ p000000x.mq保持平淡,儘管指定的信息加密。看下面的圖片。

enter image description here 所以我的問題:是否有一些內置的工具,以保持在... \ MSMQ \存儲\ p000000x.mq文件的驅動器加密的消息?或者我需要在發送到隊列之前加密郵件正文,然後,當從隊列中偷看時,我需要解密它?

非常感謝!

回答

4

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

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

+1

謝謝,約翰。我之前讀過你的文章,但決定提出一個問題,以確保在msmq之前應該再次加密消息數據。所有這些都是在項目的FIPS合規實施中完成的。 –

+0

我認爲加密存儲是那些很好的功能之一,但涉及MSMQ設計的主要(即昂貴的)更改。 –

1

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

該解決方案是一個備選我發明了專用隊列(沒有域集成)來透明地加密,並沒有由應用訴諸Application-Encrypted Messages或定製加密。它實際上會影響系統上的所有隊列,因爲MSMQ實例的整個存儲位置都已加密。

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

請注意,此解決方案要求你作一個新的存儲位置上 磁盤的MSMQ,因爲我試圖加密和 轉換的默認存儲位置是在Windows/System32下,當有問題。 如果您發現一種方法可以使此解決方案無需創建新的 文件夾,請在評論中發帖。

這些都是我需要做一個透明加密MSMQ解決方案EFS技術工作的步驟:
(此信息假設你知道在哪裏可以找到你的消息隊列管理器來配置與服務,以及如何開展其他一些基本的Windows管理任務,或者找出如何做到這一點)

  1. 登錄到機器的管理員(假設消息隊列服務已經安裝,如果沒有的話,從風安裝行程和功能)。

  2. 請注意消息隊列服務正在運行的用戶帳戶(即網絡服務)。您需要在以下步驟中執行此操作...

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

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

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

  6. 加密通過轉到其屬性和使加密複選框的文件夾。該文件夾現在已加密並可能以不同的顏色顯示。
    您可以通過登錄的計算機上的其他用戶,並試圖訪問加密文件的內容,從而導致測試這種「拒絕訪問」的消息。

  7. 現在使用MSMQ經理將其存儲位置(全部)重新指向剛剛在磁盤上創建的新加密文件夾(並遠離默認或當前的存儲位置)。更改將提示您重新啓動服務。說是的。

如果您發現此解決方案的任何問題,請在這裏發表評論。謝謝。

我通過寫和使用this article about how to write a bare minimum message queue app提出了一個基本的.NET應用程序從隊列中讀取測試了Win 7的工作站&的Windows 2008 R2服務器上的這一解決方案。

+1

這種方法簡化了數據的安全性。在生產中,性能可能會受到影響,因此建議進行負載測試以及功能測試。 –