Pregunta

Tengo algunos problemas para importar y acceder a una clave privada con el usuario ASPNET. Sé que cuando uno importa una clave privada (archivo .pfx) manualmente, en Windows, obtiene una opción para marcar la clave como exportable. Ahora, por lo que puedo decir, esto es necesario para recuperar esa clave privada más adelante.

Mi problema es que estoy importando la clave privada en el código, como usuario de ASPNET, y no parece haber una forma de marcarla como exportable, como lo hace el asistente de importación de certificados de Windows. Para aclarar, la importación funciona bien, pero cuando accedo a los detalles del certificado ahora importado, no hay datos de clave privada.

Este es el código que estoy usando para importar el certificado, una vez que ya abrí el archivo .pfx, con la contraseña correcta.

public void ImportCertificate(X509Certificate2 cert, StoreName name, StoreLocation loc)
{
    X509Store certStore = new X509Store(name, loc);
    StorePermission permission = new StorePermission(PermissionState.Unrestricted);
    permission.Flags = StorePermissionFlags.AddToStore;
    permission.Assert();
    certStore.Open(OpenFlags.ReadWrite);
    certStore.Add(cert);
    certStore.Close();
}

¿Estoy arruinando los permisos o la forma en que importo esta clave privada? ¿O voy a hacer esto por el camino equivocado por completo?

¿Fue útil?

Solución

Creo que debe establecer el indicador X509KeyStorageFlags.Exportable cuando importe el certificado. No muestra ese código, pero hay una sobrecarga del método de importación con esta firma:

public override void Import(string fileName, string password, 
                            X509KeyStorageFlags keyStorageFlags);

o este:

public override void Import(byte[] rawData, string password, 
                            X509KeyStorageFlags keyStorageFlags);

Lo que te permitirá configurarlo antes de importar. De lo contrario, todo se ve bien!

Richard

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top