【问题标题】:ASP.net permissions to root certificate storeASP.net 对根证书存储的权限
【发布时间】:2023-03-09 01:00:01
【问题描述】:

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

如果是,怎么做?

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

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

【问题讨论】:

    标签: asp.net permissions certificate


    【解决方案1】:

    通常您授予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 项目的本地计算机)进行管理,然后您可以查看/管理证书。

    请仔细查看不同的命令行选项,并确保在授予任何权限之前清楚了解什么是证书以及它们如何工作。

    【讨论】:

    • icacls.exe 的语法是:icacls.exe 文件 /grant "user":(R)
    • 要从 MMC 查看和设置权限,右键单击您需要的证书,从上下文菜单中选择所有任务... -> 管理私钥...
    • 在 Windows Server 2008/Windows 7 上,您应该在文件夹 C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys 中找到这些证书
    • @PeterTate 有没有办法为公钥做到这一点?
    【解决方案2】:

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

    转自Sohnee @ forums.asp.net

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 同意,这是一种非常不安全的做法。
      • 此方案仅适用于测试,而且只是暂时的。
      猜你喜欢
      • 2020-12-07
      • 2012-07-05
      • 2013-02-08
      • 1970-01-01
      • 2011-02-24
      • 1970-01-01
      • 1970-01-01
      • 2020-12-08
      • 2010-10-01
      相关资源
      最近更新 更多