X509Certificate2 p12 требуется магазин?

2

Вопрос при запуске следующего кода:

X509Certificate2 cert = new X509Certificate2(@"C:\file.p12", "password", X509KeyStorageFlags.Exportable);
RSACryptoServiceProvider crypt = (RSACryptoServiceProvider)cert.PrivateKey;

Я получаю следующую ошибку: Keyset does not exist.

Я не добавил сертификат в хранилище, требуется ли это для доступа к закрытому ключу?

Теги:
x509certificate
x509certificate2
private-key

1 ответ

6
Лучший ответ

Добавьте параметр X509KeyStorageFlags.PersistKeySet к последнему аргументу конструктора X509Certificate2. В противном случае, когда он загружает файл p12, он не будет загружать закрытый ключ. В частности:

X509Certificate2 cert = new X509Certificate2(@"C:\file.p12", "password",    
    X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet);
RSACryptoServiceProvider crypt = (RSACryptoServiceProvider)cert.PrivateKey;

Если это не удается, это может быть проблема с правами на файл, где хранится ключ. См. X509Certificate - Keyset не существует для объяснения и примера.

  • 0
    По-прежнему получаю ту же ошибку.
  • 0
    @Rutger Я добавил дополнительную проверку в ответ.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню