Код: Выделить всё
using (RSA rsa = RSA.Create(2048))
{
var privateKeyPem = rsa.ExportPkcs8PrivateKeyPem();
var publicKeyPem = rsa.ExportSubjectPublicKeyInfoPem();
}
===================== =========
В Windows я использую следующий код для создания публичных, частных Ключи и CSR с использованием OpenSSL и RSA с размером ключа 2048 бит в формате PEM.
Код: Выделить всё
string[] textArray1 = new string[] { "req -new -utf8 -nameopt multiline,utf8 -config \"", this.CNF_FILEPATH, "\" -newkey rsa:2048 -nodes -keyout \"", this.PRIVATEKEY_FILEPATH, "\" -out \"", this.CSR_FILEPATH, "\"" };
if (this.RunOpenSslWithArguments(string.Concat(textArray1)) == 0)
{
string[] textArray2 = new string[] { "rsa -in \"", this.PRIVATEKEY_FILEPATH, "\" -out \"", this.PUBLICKEY_FILEPATH, "\" -pubout -outform PEM" };
if (this.RunOpenSslWithArguments(string.Concat(textArray2)) == 0)
{
string CSRKey = File.ReadAllText(this.CSR_FILEPATH);
string PrivateKey = File.ReadAllText(this.PRIVATEKEY_FILEPATH);
string PublicKey = File.ReadAllText(this.PUBLICKEY_FILEPATH);
MessageBox.Show("The certificate request was successfully generated");
}
}
Код: Выделить всё
using (var rsa = RSA.Create(2048))
{
var request = new CertificateRequest("CN=YourName", rsa,
HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
var csrkey= request.CreateSigningRequestPem();
var privateKey = rsa.ExportPkcs8PrivateKeyPem();
string publicKey = rsa.ExportSubjectPublicKeyInfoPem();
}
Ключ CSR образца данных:
В Windows:
Код: Выделить всё
-----BEGIN CERTIFICATE REQUEST-----
MIIC0jCCAboCAQAwgYwxIjAgBgNVBAMMGVBveWFuIFJhc3RpbiBBemVyIFtTdGFt
cF0xFDASBgNVBAUTCzEwODYyMDUxNjE5MRowGAYDVQQKDBHYutuM2LEg2K/ZiNmE
2KrbjDEnMCUGA1UECwwe2b7ZiNuM2KfZhiDYsdin2LPYqtuM2YYg2KLYsNixMQsw
CQYDVQQGEwJJUjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKYdEy19
fH8iHY+Xudsk9awtURIZKLcecygm8DJtJSgI1hBQ2wyusHjRgRJ5SHpEuofMHs+x
h6+uRnJFqiz59PV6pjLlZF2gUBS4W3p/igv4/WfPUGROMBOz3DrlKs8fGb34k6Nn
dQvPZWBblUucXv0Ui/GM6itk6T5t+49E1Fwjr/LeJeU+4mWbMnvVMYKmF3mwXrAp
zPeBjlL6C73E4XEQDJ7AypvblxId/480WX+rNJlG0mqp6AK1GcIvjXWqOodDDVax
+7xTFeCHq856/eUTwjAYd5/q1ZWABE1ORaTIETWw5O7NBO67l+EEpf1pYV6BO+Zt
iWXoM70AKmgoCC8CAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4IBAQAOlcjOXRCaX0Fu
gSYwkH63T68yemVnt2B8pAOaQCYC24UOxFIKpXyRMIOefyFyfD/enPBH89Ngc/y1
xUuIBTeLVHNNaGwc1Yg/TVcS9qEJy/r/+NwSs7QJptC+w6irVGGrR8FSb9Ji18G6
3X/cO3z/+Ojc2GJH/dOab4ai5pdI4eAe65up4OMgQW6x4S1VSp5gd1UdP5iUvprQ
1DeRZSZQpMQaixkqBHpu6I5jsk/G9ZnnyhnabmgO/Kp5DwjEuCKhzhqlTSldfb/c
xWtKy9tLpTdfbFnzp0arngypXLhBSf4VkjZhPyQuf6QE2K1I+EVtWuxXrws8mx2+
fN01Eo3C
-----END CERTIFICATE REQUEST-----
в этом коде ( var csrkey= request.CreateSigningRequestPem();)
Код: Выделить всё
-----BEGIN CERTIFICATE REQUEST-----
MIICWDCCAUACAQAwEzERMA8GA1UEAxMIWW91ck5hbWUwggEiMA0GCSqGSIb3DQEB
AQUAA4IBDwAwggEKAoIBAQDKZ6dzCTFcrrBLb8L9TKqpj3x9LS9fqEVtGuGDQQNm
YhoY34JVHxYsC8fjGOfnuW5IiszL4qXlB4fPsp5q2umjygWyUFeieJipSZ+hTJlq
KezDce4rSPapfIDgLIYj0YZseKotwohcvANLIqTbjQZ73An7M0krj0k9n8XDag54
MEwemzcu8DZ+BisqUXW39Hje+WDbX59ZvNXuAr8AFpDqbOfIQlSQCYbj/S88GwV3
CWtUDOKaQ8/bzHvKaodbxFN2r7VEU418HJs5iAnL2TE7J3LGAUW1nskZ48yFzjgp
IJRbwdy1kghRB8TyyrCMFvqv5tPoiw9EF7eOIervRohZAgMBAAGgADANBgkqhkiG
9w0BAQsFAAOCAQEATeer86ymx+eQRDw5F45waz7J0miNfRRzHjRiYoiRXbbfjYfu
aP1QOQFqFrF2gVRToBE2a6t2krm6ebotqrmhBpH4lfvwiN8uOtVlARAXwffuoQOs
hYyU5Cjar4Igftmq5I8Y3LpmPuYIx7M5yL/5pefVNFGjRePXG1fJJCSzzZ0bS5CT
gV7MbCJQLsU7qyijdQnAeeMNaoSVDiAvFrJ+HtYBHXwHgGO5aGm6zeFFuNPsZFJB
oOwDahfakuyeEn2XRczxCBPwalK6QB1X3399i/mqWjnl6l0UMA+nTYDsqrNC5kbU
+ziyytQSPO7U518LONTtVtGjC5uHR14wYxxEaQ==
-----END CERTIFICATE REQUEST-----
Подробнее здесь: https://stackoverflow.com/questions/791 ... ndroid-ios