windows-7 – 本地计算机“受信任的根”证书的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,则设置个人存储中证书的权限.我可以在那里访问它.但是我无法在root中访问它.它只是说:

Keyset does not exist

有什么建议?

附加信息

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

Why trusted root store and not personal?
I have a pre-built assembly that accesses this certificate in this particular store,so simply placing the certificate in Personal store won’t do the trick for me. That’s why setting trust permissions on private keys of trusted root certificates is imperative.

我没有尝试使用受信任的根证书颁发机构,但我发现与其他证书商店最简单的做法是将证书拖放到个人存储中,然后设置权限,然后拖放回到原始证书商店.在您的情况下,受信任的根证书颁发机构.

使用证书MMC的步骤:

> Import certificate to the store you want it and mark keys as exportable.(你可以绕过这个并直接导入个人商店,但我还没试过.)
>将导入的证书拖放到个人存储中.
>右键单击个人存储中的证书,然后在上下文菜单中单击“所有任务”,然后在子菜单中单击“管理私钥”.根据您的应用程序池将相应权限设置为referenced in step 1.>设置权限后,将证书拖放回原始存储(在您的情况下为受信任的根证书颁发机构).

相关文章

Windows2012R2备用域控搭建 前置操作 域控主域控的主dns:自...
主域控角色迁移和夺取(转载) 转载自:http://yupeizhi.blo...
Windows2012R2 NTP时间同步 Windows2012R2里没有了internet时...
Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...