Permissões de confiança de PrivateKey para certificados de “raízes confiáveis” da máquina local

Eu tenho um certificado que precisa ser importadoCertificados / Autoridades de Certificação Raiz Confiáveis e tem uma chave privada correspondente.

Para acessar realmente a chave do código, é necessário definir permissões de chave privada para conceder acesso total a um pool de aplicativos específico do IIS. Eu entendo totalmente isso, mas o problema é que isso só pode ser definido em certificados pessoais e não em certificados de raiz confiáveis.

Eu tentei adicionar o mesmo certificado à loja pessoal e o seguinte código não quebra:

<code>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();
</code>

Definir permissões no certificado no armazenamento pessoal funciona se eu mudarStoreName.Root paraStoreName.My. Eu sou capaz de acessá-lo lá. Mas não consigo acessar no root. Apenas diz:

O conjunto de chaves não existe

Alguma sugestão?

Informação adicional

Se eu definir minha identidade de pools de aplicativos paraSistema local (que tem permissões totais sobre a minha máquina) eu possocom sucesso acesso chave privada. Portanto, a questão principal é como definir permissões na minha identidade de pool de aplicativos para ter acesso a chaves privadas para certificados no armazenamento de raiz confiável.

Por que a loja de raiz confiável e não pessoal?
Eu tenho um assembly pré-construído que acessa este certificado nessa loja específica, portanto, simplesmente colocar o certificado na Loja pessoal não serve para mim. É por isso que a configuração de permissões de confiança em chaves privadas de certificados raiz confiáveis ​​é imperativa.

questionAnswers(3)

yourAnswerToTheQuestion