ASP.net权限到根证书存储区

时间:2009-08-13 11:48:28

标签: asp.net permissions certificate

是否可以向证书存储区授予asp.net读取权限?

如果是,怎么样?

如果不是......我是否需要为每个证书文件手动设置权限?

如果是这些文件在HDD上的物理位置在哪里?

3 个答案:

答案 0 :(得分:12)

通常,您授予 A 证书的权限。我使用这样的方法来查找自定义的证书和授予权限。如果您使用的是Verisign,Thawte等公共实体颁发的证书,则可能没有必要。

FindPrivateKey.exe My LocalMachine –n "CN=<certificate issuer>" 

...将在特定发行人的个人商店中的本地机器上找到证书。

注意:如果本地计算机上没有FindPrivateKey, 下载WCF示例,包括FindPrivateKey工具 http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=21459

FindPrivateKey返回证书私钥的位置,类似于

"C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\Machinekeys\4d657b73466481beba7b0e1b5781db81_c225a308-d2ad-4e58-91a8-6e87f354b030".

运行以下命令行,为ASP.NET / WCF服务的进程标识分配只读访问权限

cacls.exe "C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\Machinekeys\4d657b73466481beba7b0e1b5781db81_c225a308-d2ad-4e58-91a8-6e87f354b030" /E /G "NT AUTHORITY\NETWORK SERVICE":R 

注意:如果您运行的是MicrosoftWindows®XP,请为ASPNET身份而不是NT Authority \ Network Service身份授予证书权限,因为IIS进程在Windows XP中的ASPNET帐户下运行。

可以从证书的MMC管理单元中查看证书。打开MMC,选择文件 - &gt;添加/删除管理单元,单击添加按钮并选择证书。从这里,您需要选择适当的存储(通常是计算机帐户 - 用于ASP.NET项目的本地计算机)来管理,然后您可以查看/管理证书。

请仔细查看不同的命令行选项,并确保在授予任何权限之前,您已清楚了解哪些证书及其工作方式。

答案 1 :(得分:9)

默认情况下,asp.net运行的网络服务帐户无权访问本地计算机个人证书。通过以下方式授予访问权限:

Sohnee @ forums.asp.net重新发布

  

第1步 - 如果您还没有   已安装 - 获取WinHttpCertCfg

     

第2步 - 如果你已经拥有了   证书安装在机器上   而你只需要授予访问权限   网络服务:

     
    

WinHttpCertCfg.exe -g -c LOCAL_MACHINE \ MY -s“IssuedToName”-a“NetworkService”

  

答案 2 :(得分:-7)

不要真的喜欢回答我自己的问题,但摆脱这个错误的一个简单方法就是让网络服务完全访问c:\驱动器,并传播权限。

你会把我击倒我知道,告诉我这有多糟糕 - 但它确实有效。