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 adicionalSe 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.