WCF分布式开发常见错误(25):The certificate 'CN=WCFHTTPS' must have a private key

   在准备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】类似问题:
    国内外也有很多网友遇到这个问题:
 
  • The certificate 'CN=tempCert' must have a private key that is capable ...
  • The certificate 'CN=localhost' must have a private key that is capable ...
  • access rights for the private key
  • ServiceCertificate - Private Key & Permissions
  • Service hosted in IIS 7 using net.msmq binding (WAS) - can't open ...   

    有可能有办这个的参考文章:
    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安全开发过程中会遇到,大家多注意。
     参考文章:

    1. http://social.microsoft.com/Forums/zh-CN/wcfzhchs/thread/857f4257-8f43-4c7d-baa6-d2cabba36372
  • 你可能感兴趣的:(分布式,certificate,key,the,WCFHTTPS)