当我使用CertUtil将证书导入商店时,例如certutil -f -v -user -privatekey -importPFX my mycert.p12
,然后在C#中读取它,我发现其导出政策为AllowExport | AllowPlaintextExport
。
但是,使用X509Store.Add()
方法将同一证书导入同一商店,然后将其重新读入时,导出策略仅为AllowExport
;将证书导入商店时,我使用X509KeyStorageFlags.Exportable
标志,例如:
...
X509Certificate2Collection x509cert2Collection = new X509Certificate2Collection();
x509cert2Collection.Import(myp12bytes, passwd, X509KeyStorageFlags.Exportable);
foreach (X509Certificate2 x509cert2 in x509cert2Collection) {
X509Store myStore = new X509Store(StoreName.My, StoreLocation.CurrentUser);
myStore.Add(x509cert2);
myStore.Close();
}
...
我的问题是:有没有办法在C#中将X509Certificate2添加到X509Store,以便证书的导出策略包括AllowExport
和AllowPlaintextExport
? X509KeyStorageFlags似乎没有定义AllowPlaintextExport
标志;只有CngExportPolicies
。
仅供参考,我使用.NET Framework 4.6.1作为目标。
感谢。