2012-11-20 122 views
0

客戶端是否需要安裝證書,在使用WCF的wsHttpBinding上使用用戶名認證時,還是僅在主機上需要?在任何情況下,這個證書是否需要由第三方簽名或者是否也可以使用自簽名的證書?客戶端是否需要用於WCF中的用戶名認證的證書

我的理解是,我可以使用自簽名證書,並在服務器端設置

<authentication certificateValidationMode="None" /> 

。它是否正確?

還有一件事。如果我使用自簽名證書,還是完全一樣,我是否需要將證書放入任何特定商店? - 對自我的迴應:只要正確的商店設置在代碼中,商店就不重要了。

+0

據我所知,使用用戶名認證模式,您可以使用SSL認證來獲得更高的安全性,並且它是任意的。 –

+0

使用安全模式「message」和clientcredentialtype「userName」,我的理解是需要證書。我認爲我需要在交通運輸中使用SSL的輔助證書。 – espvar

+0

確實需要證書。邏輯就是爲什麼要在'明確'文本非SSL中傳遞證書。 – lcryder

回答

1

如果沒有傳輸模式安全性,WCF將不允許用戶名認證,這意味着您需要證書。

有兩種方式,據我知道,要獲得正確的證書:

  1. 購買一個從受信任的證書頒發機構。
  2. 親自成爲證書頒發機構並創建證書。除非你控制對話的雙方,否則這不是很有用。如果您決定製作自己的證書,則可以使用MakeCertPvk2PfxOpenSSL創建鏈式加密證書。看看這個使用OpenSSL的how-to article。最後但並非最不重要的一點是,您應該將私鑰保存在安全的位置。

現在你應該有以下文件(名稱是論證的目的):

  • server.cer(服務器公鑰)爲
  • server.pfx(密鑰交換文件服務器)
  • client.cer(客戶端公鑰)客戶端
  • client.pfx(密鑰交換文件)

然後,你可以做到以下幾點:

  • 在服務器上,在本地計算機證書存儲:

    1. 導入server.pfx到個人文件夾。這將允許服務器使用其私鑰對消息進行加密,並對使用其公鑰加密的消息進行解密。
    2. 將client.cer導入到Trusted People文件夾中。這將允許服務器使用客戶端的公鑰對消息進行加密,並解密使用客戶端私鑰加密的消息。
  • 在客戶端,在本地計算機證書存儲:

    1. 導入client.pfx到個人文件夾。這將允許客戶端使用其私鑰對消息進行加密,並對使用其公鑰加密的消息進行解密。
    2. 將server.cer導入到Trusted People文件夾。這將允許客戶端使用服務器的公鑰對消息進行加密,並解密用服務器的私鑰加密的消息。

最後客戶端和服務集的配置文件:

<authentication certificateValidationMode="ChainTrust"/> 

這將確保只有證書可以鏈達到受信任的根存儲證書頒發機構將是有效的。