Как я могу получить доступ к закрытому ключу с помощью учетной записи пользователя ASPNET?

StackOverflow https://stackoverflow.com/questions/167252

  •  03-07-2019
  •  | 
  •  

Вопрос

У меня возникли проблемы с импортом и доступом к закрытому ключу пользователя ASPNET.Я знаю, что когда кто-то импортирует закрытый ключ (файл .pfx) вручную в Windows, вы получаете возможность пометить ключ как экспортируемый.Насколько я могу судить, это необходимо для того, чтобы в дальнейшем получить этот закрытый ключ.

Моя проблема заключается в том, что я импортирую закрытый ключ в коде как пользователь ASPNET, и, похоже, нет способа пометить его как экспортируемый, как это делает мастер импорта сертификатов Windows.Чтобы уточнить, импорт работает нормально, но когда я получаю доступ к сведениям об импортированном сертификате, данные закрытого ключа отсутствуют.

Это код, который я использую для импорта сертификата после того, как я уже открыл файл .pfx с правильным паролем.

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();
}

Я испорчу разрешения или способ импорта этого закрытого ключа?Или я делаю это совершенно неправильно?

Это было полезно?

Решение

Я считаю, что вам нужно установить флаг X509KeyStorageFlags.Exportable при импорте сертификата.Вы не показываете этот код, но существует перегрузка метода Import с этой сигнатурой:

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

или этот:

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

Это позволит вам установить его перед импортом.В остальном все выглядит хорошо!

Ричард

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top