xuyunhai20160827 Ответов: 1

Как мне...использовать x509certificate2 для получения privatekey вызывает cryptographicexception " недопустимый тип поставщика указан”


каждый,

Я разрабатываю веб-приложение, которое использует X509Certificate2 для получения закрытого ключа из файла сертификации. Фрагмент кода выглядит следующим образом:
public static RSACryptoServiceProvider GetSignProviderFromPfx()
{
    var strFileName = "c:\cer\mycerfile.pfx";
    var strPassword = "000000";            
    X509Certificate2 pc = new X509Certificate2(strFileName, strPassword, X509KeyStorageFlags.MachineKeySet);
    var ThePivateKey = pc.PrivateKey;

    return (RSACryptoServiceProvider)ThePivateKey;
}

Но заявление pc. Privatekey вызывает систему.Безопасность.Криптография.CryptographicException "указан недопустимый тип поставщика". Я уверен, что файл сертификации не имеет никаких проблем, у него действительно есть закрытый ключ. И свойство pc.HasPrivateKey также возвращает true.

Тестовая среда-VS2013, окно 7.

Кто-нибудь может помочь?

Спасибо.

Что я уже пробовал:

Я также попытался следовать:

a. я отладил его в VS2013 с помощью iis express, проблема возникла.

б) я отладил его на другом компьютере с той же средой, что и у меня, и проблема тоже возникла.

c. я опубликовал приложение на сервере с iis, работающем на Windows Web Server 2008 R2, оно работало нормально.

d. я опубликовал приложение на веб-сайте widows azure, оно также отлично работало.

Поэтому я думаю, что фрагмент кода не имеет никаких проблем. Ключевая причина возникновения исключения заключается в том, что может возникнуть некоторая проблема с запущенной средой. Я проверил и сравнил чтение/запись прямо в файле сертификации в разных средах, все они одинаковы.

1 Ответов