2010-11-16 4 views
4

В Win Server 2008 я могу выполнить код ниже, и когда я пытаюсь экспортировать сертификат через графический интерфейс MMC, у меня нет возможности экспортировать закрытый ключ. Однако, если я использую GUI для импорта сертификата, я также могу экспортировать закрытый ключ. Что мне не хватает в моем коде?X509Certificate2 имеет закрытый ключ, но не экспортируемый?

string certfile = @"mycert.p12"; 
SecureString secString = new SecureString(); 
foreach (char c in "password") 
{ 
    secString.AppendChar(c); 
} 

X509Certificate2 cert = new X509Certificate2(certfile, secString, X509KeyStorageFlags.Exportable); 
var store = new X509Store(StoreName.My , StoreLocation.CurrentUser); 
store.Add(cert); 

ответ

9

Aha. Флаги хранения ключей должны быть экспортируемыми и сохранены.

X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet 
+2

Должно ли быть X509KeyStorageFlags.PersistKeySet? Кажется, я не вижу X509KeyStorageFlags.Persisted! –

+0

@caveman_dick, я так думаю; PersistKeySet работает для меня. Спасибо за это! Это сэкономило мне массу времени. – Alex