Открытый и закрытый ключ в X509Сертификат - PullRequest
0 голосов
/ 25 сентября 2019

Я использую библиотеку C # System.Security.Cryptography для создания сертификата для apache.У меня уже есть сертификат CA, который я пытаюсь использовать для подписи сертификата сервера.

Я использую метод CertificateRequest.Create для создания сертификата.К сожалению, он не предоставляет закрытый ключ, который мне нужен для apache (.pem / .crt и .key).Как сохранить сертификат и получить оба необходимых файла для apache?

OpenSSL не является для меня решением.

X509Certificate2 signedCert = request.Create(issuerCert, DateTimeOffset.Now, 
    DateTimeOffset.Now.AddYears(5), new byte[] { 1, 2, 3, 4 });

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

File.WriteAllText(path + "cert.pem",
            "-----BEGIN CERTIFICATE-----\r\n"
            + Convert.ToBase64String(signedCert.Export(X509ContentType.Cert), Base64FormattingOptions.InsertLineBreaks)
            + "\r\n-----END CERTIFICATE-----");

Как получить закрытый ключ и сохранить его как файл .key?

1 Ответ

0 голосов
/ 25 сентября 2019

В .NET Core 3.0:

File.WriteAllText(path + "cert.pem",
    "-----BEGIN PRIVATE KEY-----\r\n"
        + Convert.ToBase64String(
            key.ExportPkcs8PrivateKey(),
            Base64FormattingOptions.InsertLineBreaks)
        + "\r\n-----END PRIVATE KEY-----");

Где key - это любой тип AsymmetricAlgorithm (который вам нужно просто ... где-то ..., вероятно, передать в конструктор CertificateRequest, но так как вы создалисертификат, подписанный цепочкой, который CertificateRequest работал бы из экземпляра только с открытым ключом).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...