WCF分布式開發常見錯誤(25):The certificate 'CN=WCFHTTPS' must have a private key that is capable of key exchange
在準備WCF安全開發實踐編程系列文章的時候,製作認證出現這個問題。
The certificate 'CN=WCFHTTPS' must have a private key that is capable of key exchange. The process must have access rights for the private key.
認證必須有一個可以交換密鑰的私密金鑰,進程必須有訪問私密金鑰的許可權。
【1】原因分析:
就是認證存取權限導致的問題,其次就是認證是否有密鑰,因為要使用密鑰 來解密訊息。而且這個認證要安裝受信任的機構裡。
認證沒有一個可以交換的私密金鑰,我們需要重新製作認證。類型是 exchange.
【2】類似問題:
國內外也有很多網友遇到這個問題
有可能有辦這個的參考文章:
http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/8e1c3feb- 56de-4366-8af5-3d526d4f4ce1/
http://social.msdn.microsoft.com/forums/en-US/wcf/thread/ac4a69d1- af3e-495c-8068-cb25ad0bb146/
http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/b1369589- 5207-4438-bcb8-2cade616bc0e
【3】解決辦法:
在Visual Studio 命令列工具裡啟動命令列視窗,輸入以下命令:
1.製作一個認證。製作認證:makecert -sr localmachine -ss My -n CN=MyServerCer -sky exchange -pe -r。http://msdn.microsoft.com/zh- cn/library/aa702761.aspx
exchange 表示密鑰可以匯入。
2.匯出認證檔案,帶密鑰的pfx檔案。使用mmc
3.匯入認證到信任的人。
4.匯入認證到信任的機構,這個認證就被信任了。
這個問題WCF安全開發過程中會遇到,大家多注意。
參考文章:
http://social.microsoft.com/Forums/zh-CN/wcfzhchs/thread/857f4257- 8f43-4c7d-baa6-d2cabba36372