与证书斗争:未成功获取私钥的访问权限

时间:2010-10-11 10:55:08

标签: .net web-services security certificate private-key

我与许多服务器和Pcs合作开发人员。服务器是win2003,PC开发者是Windows XP。

在名为preiis01的服务器Win2003中,在预生产环境中,公司中的其他人使用任何其他用户(我的未知用户)安装客户端证书,以登录服务器preiis01。

我使用我的用户“domainCompany \ myuser”登录服务器preiis01(使用终端服务器,Windows XP远程桌面)。

在preiis01中,

我执行mmc - >捕捉 - >本地机器的证书。在节点 - >个人 - >证书,我见过客户证书:

发给 ENTIDAD COMPANY INSURE SA - CIF A93 - NOMBRE SURNAME1 NAME1

发布者 FNMT Clase 2 CA

在证书的属性中,我看到了指纹:“93 bc a4 ad 58 c9 3c af 8b eb 0b 2f 86 c7 9d 81 70 a6 c4 13”

现在,我执行以下命令:

1。)FindPrivateKey My LocalMachine -n​​“CN = ENTIDAD COMPANY INSURE SA - CIF A93 - NOMBRE SURNAME1 NAME1”-a

我收到此错误:

由于以下原因,

FindPrivateKey失败: 没有带钥匙的证书'CN = ENTIDAD COMPANY INSURE SA - CIF A93 - NOMBRE SURNAME1 NAME1 '在商店找到。

2。)FindPrivateKey My LocalMachine -t“93 bc a4 ad 58 c9 3c af 8b eb 0b 2f 86 c7 9d 81 70 a6 c4 13”-c

我得到了这个:

* FindPrivateKey帮助用户找到X.50私钥文件的位置 9证书。

用法:FindPrivateKey [{{-n} | {-t}} [-f | -d | -a]

   <subjectName> subject name of the certificate

   <thumbprint>  thumbprint of the certificate (use certmgr.exe to get it)

   -f            output file name only

   -d            output directory only

   -a            output absolute file name

e.g。 FindPrivateKey My CurrentUser -n“CN = John Doe”

e.g。 FindPrivateKey My LocalMachine -t“03 33 98 63 d0 47 e7 48 71 33 62 64 76 5 c 4c 9d 42 1d 6b 52“-c *

3。)winhttpcertcfg.exe -l -c LOCAL_MACHINE \ My -s“ENTIDAD COMPANY INSURE SA - CIF A93 - NOMBRE SURNAME1 NAME1”

我收到此错误:

  

Microsoft(R)WinHTTP证书   配置工具版权所有(C)   Microsoft Corporation 2001.匹配   证书:

     

CN = ENTIDAD COMPANY INSURE SA - CIF A93 - NOMBRE SURNAME1 NAME1

     

OU = 700012436

     

OU = FNMT Clase 2 CA

     

O = FNMT

     

C = ES

     

错误:

     

未成功获取私钥的访问权限。这只能由安装证书的用户完成。

未成功获取私钥的访问权限。

有什么建议吗?

更新:Marcel Roma(社交msdn论坛)

证书很可能是由贵公司的其他人(例如管理员)安装的。只有该人才能访问证书的私钥。下载FindPrivateKey工具,要求管理员执行它以找出保存私钥文件的目录,并让他设置所需的权限,以便进程可以访问该文件。

还有一些关于Windows XP由于编码问题而无法从文件中提取私钥的报告:

http://blogs.msdn.com/b/alejacma/archive/2010/01/11/winhttpcertcfg-tool-cannot-access-private-key-of-a-certificate.aspx

更新

域“domainCompany \ Pre_Certificado”中的用户在Store Local Machine中安装证书。

domainCompany \ Pre_Certificado是管理员,在IIS_WPG组中,具有本地策略:“以服务身份登录”

我在IIS 6.0中为AppPool Identity配置:domainCompany \ Pre_Certificado

ASP.NET应用程序使用identity :: domainCompany \ Pre_Certificado

执行

我回收AppPool并执行应用程序,我得到System.Security.Cryptography.CryptographicException:找不到用于解密的证书和私钥

如果我再次测试,使用domainCompany \ Pre_Certificado用户登录服务器IIS中的会话,我在ASP.NET应用程序中调用页面,一切正常。

(注意:使用终端服务器登录服务器IIS)

但是如果在服务器IIS(用户:domainCompany \ Pre_Certificado)中注销会话,我会得到同样的错误:

System.Security.Cryptography.CryptographicException:找不到用于解密的证书和私钥

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

以安装证书的用户(或本地管理员)身份登录。启动FindPrivateKey工具。转到安全窗格并将您自己的用户添加到列表中。您现在可以自己登录并控制证书的私钥。