كيف يمكنني تحويل شهادة SSL من PEM إلى DER والحفاظ على المفتاح الخاص؟

StackOverflow https://stackoverflow.com/questions/213568

سؤال

والخلفية الدرامية: لدي PKCS # 12 (P12) شهادة مع تشفير متماثل (كلمة السر) التي استعملتها بينسل تحويله إلى PEM. الافتتاح ان كنص أرى أنه يحتوي على كل من قسم BEGIN/END CERTIFICATE وكذلك BEGIN/END RSA PRIVATE KEY. الطبقة X509Certificate برنامج .NET Framework يعتمد فقط على شكل "ASN.1 DER"، لذلك كنت بينسل لتحويل PEM إلى DER. للأسف يبدو تفعل هذا لا يتضمن المفتاح الخاص وهو ما أحتاج لإجراء اتصال SSL مع SslStream وTcpClient.

X509CertificateCollection certsFromFile = new X509CertificateCollection();
X509Certificate2 cert = new X509Certificate2("my.der.crt");
if (!cert.HasPrivateKey)
    throw new Exception("No private key");
certsFromFile.Add(cert);

TcpClient tcpclient = new TcpClient(hostname, port);
SslStream sslstream = new SslStream(tcpclient.GetStream(), false,
    null, null);
sslstream.AuthenticateAsClient(hostname, certsFromFile,
    SslProtocols.Ssl3, false);
sslstream.Close();
tcpclient.Close();

وكيف تأخذ هذا الملف PEM وجعله DER مع الحفاظ على المعلومات الأساسية خاصة لذلك يمكن استخدامه في. NET للتوقيع؟

هل كانت مفيدة؟

المحلول

عفوا، أنا وراء الزمن! يبدو X509Certificate2 يمكن قراءة PKCS # 12 صورة لذلك ليس هناك حاجة لأي التحويل.

نصائح أخرى

ويتم تخزين شهادات ومفاتيح عموما على حدة. قطع ملف PEM إلى ملفين، واحدة مع الشهادة واحد مع المفتاح. يمكنك بعد ذلك استخدام أدوات بينسل لتحويل كل ملف على حدة في ملف DER.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top