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