none
WCF Makecert生成证书怪异问题! RRS feed

  • 问题

  • 我是用makecert生成X509证书,语法为: makecert -sk WCFtest -iv WCFRootCA.pvk -n "CN=ESBWCFServerCert" -ic WCFRootCA.cer -sr localmachine -ss TrustedPeople -sky exchange -pe ESBWCFServerCert.cer

    报错:ERROR: Cant create the key of the subject <'WCFtest '> Failed.

    然而我将存储位置Localmachine 改为currentuser 则可以生成正常生成证书!

    经进一步测试,只要证书的存储位置是localmachine 则出现以上错误。

    之前没有问题,我用这个语句没出现问题,就是今天突然出现问题,查看资料说是当前用户权限问题,我用的是系统的administrator账户。

    请遇到同类问题的解答一下!

    小飞鱼Гìsん
    2011年6月21日 3:17

答案

全部回复

  • 帮忙顶一下,别沉了!  专家们,帮忙一下!

    我在另一台为XP系统的机器上,可以执行 makecert -sk WCFtest -iv WCFRootCA.pvk -n "CN=ESBWCFServerCert" -ic WCFRootCA.cer -sr localmachine -ss TrustedPeople -sky exchange -pe ESBWCFServerCert.ce,但是在我的我机器上就不行,同样是xp系统,环境应该是一样的


    小飞鱼Гìsん
    2011年6月21日 6:54
  • 唉~~等了一天,居然没有一个人回答,可悲啊!

    没办法,只能自己慢慢摸索了,以下是我测试的过程,希望有人能帮我解决一下迷惑:

    1. 因为使用 makecert -sk WCFtest -iv WCFRootCA.pvk -n "CN=ESBWCFServerCert" -ic WCFRootCA.cer -sr localmachine -ss TrustedPeople -sky exchange -pe ESBWCFServerCert.cer 无法将证书生成Localmachine存储位置下,于我将证书存储位置改为CurrentUser,最后成功生成证书。
    2.打开mmc,将CurrentUser TrustedPeople 下的证书,拷贝到LocalMachine TrustedPeople,产生一个问题,将证书Copy到LocalMachine下之后,CurrentUser下增加了一个一样的证书,Copy之前是一个,Copy之后变成2个一摸一样的证书,后来使用剪切的方式,CurrentUser还是产生了和LocalMachine一样的证书,但是不影响使用,求解,为何?
    3.使用Console方式运行WCF服务,WCF可以正常调用,于是改为windows服务方式运行,然后启动服务,服务出错:“证书CN=ESBWCFServerCert必须具有能够进行密钥交换的私钥。该进程必须具有访问私钥的权限。”,windows服务的登录身份为本地系统账户及当前使用的Administrator账户,我去C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA下,找到私钥文件,发现administrator已经有权限,我又给加上了NetWork Service和System账户赋权限,windows服务还是启动不了,错误依旧,死马当活马医,于是又使用Cacls命令将NetWork Service赋权限,问题照样存在,最后解决办法 是将Windows服务的登录身份指定为.\Administrator账户,再次启动服务,服务正常启动。
    4.我尝试将windows服务的登录身份改成NetWork Service账户,但是服务还是启动不了,错误依旧,我明明已经赋上了权限,为什么还不行?求解。
    5.我使用的系统是XP SP3,VS版本是VS2010,这一些列的问题应该都应该是系统的权限问题,希望版主重视一下,帮我分析分析以上遇到的问题,和迷惑之处!
    以上问题在另一台同环境的机器上,并无此问题,PC都是内网机器,统一配置的,唯一区别是我的机器有1个月没有关机,之后重启几次,问题依旧。


    小飞鱼Гìsん
    2011年6月21日 12:11
  • Hi,

    对于存储证书的目录你没有适当的权限,尝试给予你的账户(或管理员组组等)对下面这个目录完全控制权限。

    C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys

    你也可以参考下面这个英文链接.

    makecert.exe error: Can't create the key of the subject

    http://nerdwords.blogspot.com/2008/01/makecertexe-error-can-create-key-of.html


    Please mark the replies as answers if they help or unmark if not. If you have any feedback about my replies, please contact msdnmg@microsoft.com Microsoft One Code Framework
    2011年6月24日 8:46
    版主
  • 这个帖子我看过,我已经给这个目录附上权限了,我是先给整个目录赋上权限,因为不行,我在给私钥也赋上了权限,但是还是不行,所以就有点怪异!

    我现在有点不懂,这个帖子说要将用户先移除组,再添加进组里,但是我本身是administrator账户,根本移除不了,于是我建立了一个新的管理员组的账户,然后附上权限,还是一样的问题!



    2011年6月30日 1:45