.NetCore 2.2:如何获取证书的私钥?

时间:2019-01-21 12:06:54

标签: .net-core x509certificate private-key

对于我使用的API的实现,我需要提供一个证书,该证书由2个字节的数组组成,一个字节用于公共密钥,另一个字节用于私有密钥。

我最初的想法是使用.Net的X509Certificate对象执行此操作。但是我在努力获取私钥字节。

var certificate = new X509Certificate2("testCert.pfx", password, X509KeyStorageFlags.Exportable);
byte[] myPublicKey = certificate.GetRawCertData();
byte[] privateKey = ???

我尝试导出密钥,但是我不能单独导出私钥。
并且:

certificate.PrivateKey.ToXmlString(true);

在Ubuntu系统上不可用:-(

您有什么想法,如何从证书中获取私有字节? 可能X509Certificate2并不是最佳解决方案...

1 个答案:

答案 0 :(得分:0)

使用以下X509Certificate2 extension methods的合适方法:

  • GetRSAPrivateKey(X509Certificate2)-用于RSA密钥
  • GetDSAPrivateKey(X509Certificate2)-用于DSA密钥
  • GetECDsaPrivateKey(X509Certificate2)-用于EC键

您需要使用的扩展方法取决于非对称密钥算法。