2010-11-16 35 views
4

Sur Win Server 2008, je peux exécuter le code ci-dessous, et lorsque j'essaie d'exporter le CERT via l'interface graphique MMC, je n'ai pas non plus la possibilité d'exporter la clé privée. Cependant, si j'utilise l'interface graphique pour importer le cert, je suis également autorisé à exporter la clé privée. Qu'est-ce qui me manque dans mon code?X509Certificate2 a clé privée non exportable?

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

Répondre

9

Aha. Les indicateurs de stockage de clé doivent être exportables et conservés.

X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet 
+2

Cela devrait-il être X509KeyStorageFlags.PersistKeySet? Je n'arrive pas à voir X509KeyStorageFlags.Persisted! –

+0

@caveman_dick, je le pense; PersistKeySet fonctionne pour moi. Merci pour votre aide! Cela m'a économisé une tonne de temps. – Alex