PrivateKey信任本地计算机信任权限&受信任的根&证书 [英] PrivateKey trust permissions for local machine "Trusted roots" certificates

查看:0
本文介绍了PrivateKey信任本地计算机信任权限&受信任的根&证书的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个证书必须导入证书/受信任的根证书颁发机构,并且有对应的私钥。

要从代码实际访问密钥,您需要设置私钥权限以授予对特定IIS应用程序池的完全访问权限。我完全理解这一点,但问题是这只能在个人证书上设置,而不能在受信任的根证书上设置。

我已尝试将相同的证书添加到个人存储,但以下代码没有中断:

X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);

foreach (X509Certificate2 cert in store.Certificates)
{
    if (cert.HasPrivateKey)
    {
        // access private key here
    }
}

store.Close();
如果我将StoreName.Root更改为StoreName.My,则在个人存储中设置证书的权限起作用。我可以在那里访问它。但我无法在根目录下访问它。上面只写着:

密钥集不存在

有什么建议吗?

其他信息

如果我将我的应用程序池标识设置为本地系统(它对我的计算机具有完全权限),我可以成功访问私钥。因此,主要问题是如何设置应用程序池标识的权限以访问受信任根存储中证书的私钥。

为什么信任根存储而不是个人?
我有一个预构建的程序集,可以在这个特定的存储中访问这个证书,所以简单地将证书放在个人存储中对我来说是行不通的。这就是为什么必须对受信任根证书的私钥设置信任权限。

推荐答案

我没有尝试过使用受信任的根证书颁发机构进行此操作,但我发现对其他证书存储执行的最简单的操作是将证书拖放到个人存储中,然后设置权限,然后拖放回原始证书存储。在您的情况下是受信任的根证书颁发机构。

使用证书MMC的步骤:

  1. Import certificate to the store you want it and mark keys as exportable.(您或许可以跳过此操作并直接导入到Personal Store,但我尚未尝试。)
  2. 将导入的证书拖放到个人存储区。
  3. 右键单击Personal Store中的证书,在上下文菜单中,单击"所有任务",然后在子菜单中单击"管理私钥"。根据您的应用程序池将适当的权限设置为referenced in step 1
  4. 设置权限后,将证书拖放回原始存储(在您的情况下为受信任的根证书颁发机构)。

这篇关于PrivateKey信任本地计算机信任权限&受信任的根&证书的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆