【发布时间】:2023-03-09 01:00:01
【问题描述】:
是否可以授予 asp.net 对证书存储的读取权限?
如果是,怎么做?
如果没有...我需要为每个证书文件手动设置权限吗?
如果是,这些文件在 HDD 上的物理位置?
【问题讨论】:
标签: asp.net permissions certificate
是否可以授予 asp.net 对证书存储的读取权限?
如果是,怎么做?
如果没有...我需要为每个证书文件手动设置权限吗?
如果是,这些文件在 HDD 上的物理位置?
【问题讨论】:
标签: asp.net permissions certificate
通常您授予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
注意:如果您运行的是 Microsoft Windows® XP,请授予 ASPNET 身份而不是 NT Authority\Network Service 身份的证书权限,因为 IIS 进程在 Windows XP 中的 ASPNET 帐户下运行。
可以从证书的 MMC 管理单元中查看证书。打开 MMC,选择 File --> Add/Remove Snap in,单击添加按钮并选择证书。从这里您需要选择适当的商店(通常是计算机帐户 - 用于 ASP.NET 项目的本地计算机)进行管理,然后您可以查看/管理证书。
请仔细查看不同的命令行选项,并确保在授予任何权限之前清楚了解什么是证书以及它们如何工作。
【讨论】:
C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys 中找到这些证书
默认情况下运行asp.net的网络服务帐户无权访问本地机器个人证书。通过以下方式授予访问权限:
第 1 步 - 如果您还没有它 已安装 - 获取WinHttpCertCfg
第 2 步 - 如果您已经拥有 机器上安装的证书 你只需要授予访问权限 网络服务:
WinHttpCertCfg.exe -g -c LOCAL_MACHINE\MY -s "IssuedToName" -a "NetworkService"
【讨论】:
不太喜欢回答我自己的问题,但摆脱此错误的一种简单方法是让网络服务完全访问 c:\drive,并向下传播权限。
我知道你会把我击倒,告诉我这有多糟糕 - 但它确实有效。
【讨论】: