windows-7 – 本地计算机“受信任的根”证书的PrivateKey信任权限

前端之家收集整理的这篇文章主要介绍了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.>设置权限后,将证书拖放回原始存储(在您的情况下为受信任的根证书颁发机构).

猜你在找的Windows相关文章