Solución:
¿Tiene PKCS # 12 o solo archivo PFX? En el mundo de Microsoft es lo mismo, pero otros piensan en otro (ver esta página archivada).
Puedes intentar simplemente seguir
X509Certificate2 cert = X509Certificate2(byte[] rawData, "password");
X509Certificate2 cert2 = X509Certificate2(byte[] rawData, "password",
X509KeyStorageFlags.MachineKeySet |
X509KeyStorageFlags.PersistKeySet |
X509KeyStorageFlags.Exportable);
(X509Certificate2 (Byte[])) o
X509Certificate2 cert = X509Certificate2("C:Pathmy.pfx", "password");
(consulte X509Certificate2 (String, String) e Import (String, String, X509KeyStorageFlags) en Microsoft Docs si necesita usar algunos indicadores)
ACTUALIZADO: Sería útil si inserta un fragmento de código y no solo el seguimiento de la pila de excepciones.
Cuales X509KeyStorageFlags
¿lo usas? Puede utilizar Process Monitor para averiguar qué archivo no pudo encontrar el X509Certificate2
constructor. Puede ser, por ejemplo, que no haya un contenedor de claves predeterminado para el usuario actual en Windows XP que tiene el problema. Puede crearlo y volver a intentar la importación.
Me encontré con el mismo problema.
Según este antiguo artículo de KB, el problema era que el constructor intentaba cargar el certificado en el perfil del usuario actual, pero el código .Net estaba suplantando al usuario y, por lo tanto, no había cargado el perfil del usuario. El constructor requiere que el perfil de usuario cargado funcione correctamente.
Del artículo:
Los constructores de la clase X509Certificate2 intentan importar el certificado al perfil de usuario de la cuenta de usuario en la que se ejecuta la aplicación. Muchas veces, las aplicaciones ASP.NET y COM + suplantan a los clientes. Cuando lo hacen, no cargan los perfiles de usuario para el usuario suplantado por motivos de rendimiento. Por lo tanto, no pueden acceder al almacén de certificados “Usuario” para el usuario suplantado.
La carga del perfil de usuario solucionó el error.
Yo tuve el mísmo problema.
- Abra IIS en el servidor que aloja el sitio.
- Busque el grupo de aplicaciones para el sitio.
- Haga clic en Configuración avanzada.
- Cambie “Cargar perfil de usuario” a verdadero. (puede requerir reiniciar o reiniciar)
Esto permite que funcione el subsistema criptográfico.