2012-11-01 72 views
9

我有一個WCF服務,我試圖在我們的生產Web服務器(IIS6)上託管。我設置了網絡並將我們的證書綁定到了網絡上。當我嘗試瀏覽到服務URL,我收到以下錯誤在事件日誌中:WCF錯誤:'很可能證書'我的證書'可能沒有可以進行密鑰交換的私鑰

異常消息是:這可能是證書 「CN = .mydomain,OU =安全鏈接SSL通配符,OU = IT,C = US'可能不是 具有能夠進行密鑰交換的私鑰,或者該進程可能不具有私鑰的訪問權限。請參閱內部異常 以瞭解詳細信息.. ---> System.ArgumentException:可能是 證書'CN = .mydomain.com,OU =安全鏈接SSL通配符, OU = IT,O = mydomain,C =美國'可能沒有密鑰交換能力爲 的私鑰,或者該進程可能沒有私鑰的訪問權限。詳情請參閱內部例外。 ---> System.Security.Cryptography.CryptographicException:句柄是 無效。

我已確認ASP.Net 1.1,2和4在'Web Service Extensions'中都設置爲'允許'。我還確認了證書是在iis中設置的,它顯示'您有一個與此證書相對應的私鑰'。此外,執行權限設置爲'腳本和可執行文件'。

回答

22

我有這個問題,事實證明,該服務運行的帳戶沒有權限訪問證書的私鑰。

下面是我用來解決這個問題的步驟:

  • 啓動Cetificate經理。通過運行MMC,激活[File] - [Add/Remove Snap-in ...],然後添加「Certificates」,在隨後的嚮導對話框中選擇「Computer Account」和「Local Computer」。
  • 在證書管理器中,右鍵單擊相關證書並激活[所有任務] - [管理私鑰]
  • 這會給你一個權限窗口。點擊添加
  • 添加運行此服務的帳戶名稱或組。
+0

當我檢查管理私鑰我看到我的用戶有權限,但我仍然得到這個錯誤? – Ilaria

1

似乎您的證書是爲簽名而不是密鑰交換創建的,我認爲SSL證書是正常的。

如果您查看makecert documentation,您可以看到-sky開關允許您指定證書是否應用於簽名或密鑰交換。您可以嘗試使用類型交換創建自簽名證書,並測試是否仍然發生異常。不要忘記將自簽名證書放入機器的可信根證書頒發機構文件夾中,以避免證書無效的例外情況。

+0

使用了makecert,創建了一個帶有交換參數和導入的證書。更新web.config以指向新的證書並獲取相同的錯誤。還有什麼我可以嘗試? –

相關問題