Welcome

首页 / 软件开发 / .NET编程技术 / WCF分布式开发常见错误(25)

WCF分布式开发常见错误(25)2011-06-18 博客园 Frank Xu LeiWCF分布式开发常见错误(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