تحويل شهادة PKCS # 12 إلى PEM باستخدام OpenSSL

سئل على ٢٨ فبراير ٢٠١٣  ·  تمت مشاهدة 330.1k مرة  ·  مصدر

Dean MacGregor picture
في ٢٨ فبراير ٢٠١٣

لدي برنامج OpenSSL x64 على نظام التشغيل Windows 7 الذي قمت بتنزيله من opensl-for-windows على Google Code . أحاول الجري:

openssl pkcs12 -export -in "path.p12" -out "newfile.pem" 

لكني أتلقى خطأ.

unable to load private key

كيف يمكنني استخراج الشهادة في PEM من متجر PKCS # 12 باستخدام OpenSSL؟

الإجابات

kmx picture
في ٢٨ فبراير ٢٠١٣
572

محاولة:

openssl pkcs12 -in path.p12 -out newfile.crt.pem -clcerts -nokeys
openssl pkcs12 -in path.p12 -out newfile.key.pem -nocerts -nodes

بعد ذلك لديك:

  • شهادة في newfile.crt.pem
  • المفتاح الخاص في newfile.key.pem

لوضع الشهادة والمفتاح في نفس الملف بدون كلمة مرور ، استخدم ما يلي ، لأن كلمة المرور الفارغة ستؤدي إلى عدم تصدير المفتاح:

openssl pkcs12 -in path.p12 -out newfile.pem -nodes

أو إذا كنت تريد تقديم كلمة مرور للمفتاح الخاص ، فاحذف -nodes وأدخل كلمة المرور:

openssl pkcs12 -in path.p12 -out newfile.pem

إذا كنت بحاجة إلى إدخال كلمة مرور PKCS # 12 مباشرةً من سطر الأوامر (مثل نص برمجي) ، فما عليك سوى إضافة -passin pass:${PASSWORD} :

openssl pkcs12 -in path.p12 -out newfile.crt.pem -clcerts -nokeys -passin 'pass:[email protected]'
Colin picture
في ٢٣ يوليو ٢٠١٣
22

تحتاج فقط إلى توفير كلمة مرور. يمكنك القيام بذلك في نفس سطر الأوامر بالصيغة التالية:

openssl pkcs12 -export -in "path.p12" -out "newfile.pem" -passin pass:[password]

سيُطلب منك بعد ذلك إدخال كلمة مرور لتشفير المفتاح الخاص في ملف الإخراج الخاص بك. قم بتضمين خيار "العقد" في السطر أعلاه إذا كنت تريد تصدير المفتاح الخاص غير المشفر (نص عادي):

openssl pkcs12 -export -in "path.p12" -out "newfile.pem" -passin pass:[password] -nodes

مزيد من المعلومات: http://www.openssl.org/docs/apps/pkcs12.html

KVISH picture
في ٢ فبراير ٢٠١٤
17

إذا كان بإمكانك استخدام Python ، فسيكون من الأسهل إذا كان لديك وحدة pyopenssl . ها هو:

from OpenSSL import crypto

# May require "" for empty password depending on version

with open("push.p12", "rb") as file:
    p12 = crypto.load_pkcs12(file.read(), "my_passphrase")

# PEM formatted private key
print crypto.dump_privatekey(crypto.FILETYPE_PEM, p12.get_privatekey())

# PEM formatted certificate
print crypto.dump_certificate(crypto.FILETYPE_PEM, p12.get_certificate())
KTCO picture
في ١٥ سبتمبر ٢٠١٦
3

كان لدي ملف PFX وكنت بحاجة إلى إنشاء ملف KEY لـ NGINX ، لذلك قمت بهذا:

openssl pkcs12 -in file.pfx -out file.key -nocerts -nodes

ثم اضطررت إلى تحرير ملف KEY وإزالة كل المحتوى حتى -----BEGIN PRIVATE KEY----- . بعد ذلك وافقت NGINX على ملف KEY.

yeya picture
في ١٨ مايو ٢٠٢٠
-1

إذا كنت بحاجة إلى ملف PEM بدون أي كلمة مرور ، يمكنك استخدام هذا الحل.

ما عليك سوى نسخ ولصق المفتاح الخاص والشهادة في نفس الملف وحفظهما بتنسيق pem.

سيبدو الملف بالشكل:

-----BEGIN PRIVATE KEY-----
............................
............................
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
...........................
...........................
-----END CERTIFICATE-----

هذه هي الطريقة الوحيدة التي وجدتها لتحميل الشهادات على أجهزة Cisco لـ HTTPS.