.NetCore 2.2: Как получить закрытый ключ сертификата? - PullRequest
0 голосов
/ 21 января 2019

для реализации API, который я использую, мне нужно предоставить сертификат, который состоит из 2-х байтовых массивов, один для открытого ключа, а другой для закрытого ключа.

Моя первоначальная идея состояла в том, чтобы сделать это с объектом X509Certificate .Net. Но я изо всех сил пытаюсь получить байты закрытого ключа.

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

Я пытался экспортировать ключ, но не могу экспортировать отдельный закрытый ключ.
И:

certificate.PrivateKey.ToXmlString(true);

недоступно в системе Ubuntu: - (

У вас есть идеи, как получить приватные байты из сертификатов? Может быть, X509Certificate2 - не лучшее решение для этого ...

1 Ответ

0 голосов
/ 21 января 2019

Используйте метод approrpiate этих методов расширения X509Certificate2 :

  • GetRSAPrivateKey(X509Certificate2) - для ключей RSA
  • GetDSAPrivateKey(X509Certificate2) - для ключей DSA
  • GetECDsaPrivateKey(X509Certificate2) - для ключей EC

Метод расширения, который вам нужно использовать, зависит от алгоритма асимметричного ключа.

...