ASP.net对根证书存储的权限

问题描述:

是否可以将asp.net读取权限授予证书存储?ASP.net对根证书存储的权限

如果是,如何?

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

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

一般而言,您授予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

0进程标识
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,选择文件 - >添加/删除管理单元,点击添加按钮并选择证书。从这里您需要选择合适的商店(通常是计算机帐户 - 用于ASP.NET项目的本地计算机)来管理,然后您可以查看/管理证书。

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

+0

谢谢,我发现这个信息是非常有用的。 – 2009-08-28 16:01:45

+1

icacls.exe的语法为: icacls.exe文件/授予“用户”:(R) – funwhilelost 2010-07-28 00:25:59

+5

要从MMC查看和设置权限,请从上下文菜单中右键单击所需证书,然后选择所有任务。 。 - >管理私钥... – 2011-05-10 17:52:34

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

你会把我击倒我知道,告诉我这是多么糟糕 - 但它的工作原理。

+12

-1 - 应完全掩埋 – 2010-10-04 12:27:52

+0

同意,这是一个非常不安全的做法。 – Trinition 2012-06-06 13:01:32

+0

此解决方案仅适用于测试,并且只是暂时性的。 – ashes999 2012-07-31 13:24:55

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

转播从Sohnee @ forums.asp.net

第1步 - 如果你不已经拥有了它 安装 - 获得WinHttpCertCfg

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

WinHttpCertCfg.exe -g -c LOCAL_MACHINE \ MY -s “IssuedToName” -a “网络服务”

+1

我现在感到自豪:) – Fenton 2011-01-14 14:39:59

+0

Sohnee,你的回答为我节省了大量的工作。谢谢!!! – TomZ 2011-01-14 15:51:35

+0

WinHttpCertCfg在Windows 7上不起作用。 – 2011-05-10 17:53:10