Создание пары сертификатов X509 в кодировке base-64 (общедоступная / частная) - PullRequest
4 голосов
/ 08 июня 2019

Я пытаюсь динамически сгенерировать открытый / закрытый ключ RSA X509, ниже описано, как я делаю это с помощью командной строки openssh:

openssl genrsa -out privatekey.pem 1024
openssl req -new -x509 -key privatekey.pem -out publickey.cer -days 1825
openssl pkcs12 -export -out public_privatekey.pfx -inkey privatekey.pem -in publickey.cer

Также, как добавить фразу-пароль для шифрования закрытого ключа?

и я попал сюда только на данный момент

//Generate a public/private key pair.  
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

//Save the public key information to an RSAParameters structure.  
RSAParameters rsaKeyInfo = rsa.ExportParameters(true);

Я использовал этот класс, однако он не приводит к действительному SSL, когда я отправляю его на портал разработчикаон не был принят в качестве действительного открытого ключа: developer.xero.com/myapps

С уважением

1 Ответ

2 голосов
/ 08 июня 2019

Обратите внимание, что я заменил класс RSACryptoServiceProvider рекомендуемым базовым классом RSA, который является кроссплатформенным, а также лучшей реализацией RSA .

Этот ТАК вопрос поставил меня в правильном направлении.

using (var rsa = RSA.Create(1024))
{
    var distinguishedName = new X500DistinguishedName($"CN=SelfSignedCertificate");
    var request = new CertificateRequest(distinguishedName, rsa, HashAlgorithmName.SHA256,RSASignaturePadding.Pkcs1);
    var certificate = request.CreateSelfSigned(DateTimeOffset.Now, DateTimeOffset.Now.AddDays(1825));

    // Create PFX (PKCS #12) with private key
    File.WriteAllBytes("privatekey.pfx", certificate.Export(X509ContentType.Pfx, "RGliXtaLkENste"));

    // Create Base 64 encoded CER (public key only)
    File.WriteAllText("publickey.cer",
        "-----BEGIN CERTIFICATE-----\r\n"
        + Convert.ToBase64String(certificate.Export(X509ContentType.Cert), Base64FormattingOptions.InsertLineBreaks)
        + "\r\n-----END CERTIFICATE-----");
}

Я протестировал полученный файл .cer на xero, поэтому он должен работать

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