我試圖建立一個WCF服務使用證書驗證客戶端。我已經閱讀了大量關於如何創建證書的文章,並且我已經能夠這樣做(最終)。WCF,證書認證 - 常見錯誤和混亂的參數
我運行Windows 2008 R2的服務器上安裝的證書機構和證書。當我打開MMC證書管理單元時,我選擇計算機帳戶。它是否正確?我這樣做是因爲我的WCF服務將運行在Windows服務中,並且即使沒有用戶登錄也會運行。但我承認,我不知道三個選項之間有什麼區別:
- 我的用戶帳戶
- 服務帳戶
- 計算機帳戶
一旦管理單元加載,我進口管理局證書到受信任的根證書頒發機構。然後,我將該證書導入受信任的發佈者。這樣做時我不會遇到任何錯誤。當我進行管理證書和該機構簽署的證書導入時,我不會提及任何.pvk文件。我的理解是,私鑰被嵌入到證書或授權證書中。以下是我用來創建每個證書的命令:
MakeCert.exe
-n 「CN=InternalCA」
-r
-sv InternalCA.pvk InternalCA.cer
-cy authority
MakeCert.exe
-sk InternalWebService
-iv InternalCA.pvk
-n 「CN=InternalWebService」
-ic InternalCA.cer InternalWebService.cer
-sr localmachine
-ss root
-sky exchange
-pe
注意我使用了-ss root。我看過很多文章使用-ss My。我真的不明白有什麼區別或什麼時候適合使用每個值。
我的WCF服務這臺機器託管服務(Windows服務)內部上運行。當我開始我的窗口服務,它承載WCF服務,它會立即崩潰,並在事件查看器報告一個看似常見的錯誤:
System.ArgumentException:可能 認定證書「CN = TempCertName」可能 沒有私鑰能夠密鑰交換或過程的 可能不 具有訪問權限的私鑰
我發現帖子是說我需要授予運行服務權限的用戶鑰匙。
這一個似乎這裏是一個受歡迎的答案在計算器:Grant access with All Tasks/Manage Private Keys
但我沒有的所有任務選項/管理私鑰
但我不能就如何明確要做到這一點。而且,該服務正在我的域帳戶下運行,該帳戶是管理員,也是安裝該證書的用戶。
請幫助:)
我要看看這有助於。http://stackoverflow.com/questions/893336/wcf-with-nettcpbinding-and-certificate-transport-security/893399#893399 – essedbl 2011-03-15 20:21:35