我的商店里有一个X509Certificate2证书,我想使用私钥导出到一个字节数组.证书字节数组必须使得当我稍后从字节数组导入证书时,私钥将具有私钥.
我已经尝试了很多途径,但是还没有成功地使用私钥导出证书.
X509Store store = new X509Store(StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly); X509Certificate2 cert = store.Certificates[1]; byte[] certBytes = cert.GetRawCertData(); // ObvIoUsly does not work!
可以使用私钥将证书成功导出到字节数组吗?
帮助非常感激.
解决方法
X509Certificate2类的导出功能可以导出
一个带有私钥的证书到一个字节数组.
一个带有私钥的证书到一个字节数组.
以下代码演示了使用私钥导出证书:
X509Store store = new X509Store(StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly); X509Certificate2 cert = store.Certificates[1]; // Export the certificate including the private key. byte[] certBytes = cert.Export(X509ContentType.Pkcs12);
要保护导出的证书,请使用以下导出功能重载:
byte[] certBytes = cert.Export(X509ContentType.Pkcs12,"SecurePassword");
开始编辑
要导入证书,请使用以下代码:
X509Certificate2 certToImport = new X509Certificate2(arr,"SecurePassword"); // certToImport.HasPrivateKey must be true here!! X509Store store2 = new X509Store(StoreName.TrustedPublisher,StoreLocation.CurrentUser); store2.Open(OpenFlags.MaxAllowed); store2.Add(certToImport); store2.Close();
完成编辑