2010-11-16 36 views
4

在Win Server 2008上,我可以执行下面的代码,当我尝试通过MMC GUI导出证书时,我没有选择导出私钥。但是,如果我使用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

啊哈。关键存储标志应该是可导出的持久。

X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet 
+2

应该是X509KeyStorageFlags.PersistKeySet?我似乎无法看到X509KeyStorageFlags.Persisted! – 2011-06-21 18:44:22

+0

@caveman_dick,我这么认为; PersistKeySet适用于我。 感谢您的支持!它为我节省了大量的时间。 – Alex 2012-10-15 17:16:46