2016-04-21 81 views
0

我有一個通用用例來實現Web服務(WCF)和使用此Web服務的Web客戶端。客戶端和服務都在發送和接收簽名和加密消息(消息級別安全性)。WCF使用證書(X.509)消息簽名和加密的消息級別安全

我可以有多個客戶端使用我的服務,因此需要在運行服務項目的服務器上安裝多個客戶端證書。

我已在個人和受信任的根證書頒發機構下的本地機器存儲中安裝了2個證書(服務證書和客戶端證書)。

makecert - SR LOCALMACHINE -ss我-a -n SHA1 「CN = WCFServer」 -len 2048 -sky交換-pe

makecert - SR LOCALMACHINE -ss我-a -n SHA1「CN = WCFClient「-len 2048 -sky exchange -pe

儘管證書給我錯誤」許可證的完整性不能保證「,但現在我不在乎這個問題。

Web客戶端需要通過自己的私鑰對請求消息進行簽名,並通過服務證書公鑰加密消息。

服務接收請求並通過客戶端的公鑰驗證消息的簽名,並通過自己的私鑰

不是過程解密內容的請求,並創建一個響應對象。 現在服務必須由自己的私鑰簽名響應,並通過客戶端公鑰對消息進行加密。

現在客戶端得到簽名和Encrpted響應。現在它通過服務公鑰驗證響應並使用它自己的私鑰解密消息。

這是整個Szenerio。我在本地開發機器上安裝了(客戶端和服務)X.509證書。我正在使用wsHttpBinding,通訊正常。

對於OperationContract,我正在使用[ServiceContract(ProtectionLevel=ProtectionLevel.EncryptAndSign)]進行ServiseContract和[OperationContract(ProtectionLevel = ProtectionLevel.EncryptAndSign, IsOneWay = false)]

我有以下問題: 我需要在我的代碼中籤名和加密/解密請求或響應消息(一次在客戶端,一次在服務代碼中)或web.config中的服務項目和客戶端項目中的配置是否足夠做所有這些東西?

我經歷了下面的代碼項目,它的工作正常。 http://www.codeproject.com/Articles/36683/simple-steps-to-enable-X-certificates-on-WCF

我的源代碼(Visual Studio項目),同時包含了證書可以用到位桶爲download here

任何一個可以告訴我,做我需要做的所有這些東西在代碼或它的通過我的當前配置完成。

在此先感謝。

回答

0

我從MSDN論壇得到以下答案。

我是否需要註冊,並在我的代碼加密/解密請求或響應消息(曾經在客戶端,一次在服務代碼)或配置在web.config中對服務項目和客戶端項目都足以做到這一切東東?

如果我們像你說的所有的響應和請求消息將被加密/客戶端certficate的私鑰/公鑰和服務證書的私鑰解密已配置該服務使用在配置文件中的證書驗證,則鑰匙/公鑰。所以在我看來,在配置文件中完成所有的工作就足夠了。

欲瞭解更多信息,請嘗試參考以下文章:

證書身份驗證:

https://msdn.microsoft.com/en-us/library/ff648360.aspx

消息和傳輸安全:

https://msdn.microsoft.com/en-us/library/ff648863.aspx

0

我還有幾個問題可能是任何人可以回答我。

  1. 我有多個客戶端(外部網絡應用程序)將訪問我的服務。每個客戶需要創建自己的證書嗎?客戶端會向我們提供沒有私鑰的證書,需要在服務主機服務器上進行安裝?這是一個正確的方法嗎?

  2. 每個客戶端證書都需要在web.config中配置?

  3. 我需要導出我的服務證書沒有私鑰併發送給客戶端。客戶端必須在他們的應用服務器上安裝和配置證書它是否正確?

相關問題