سؤال ما هو ملف Pem وكيف يختلف عن تنسيقات الملفات الأخرى التي يتم إصدارها من OpenSSL؟


أنا مسؤول عن صيانة خوادم ديبيان. في كل مرة يتعين عليّ فعل أي شيء باستخدام شهادات الأمان ، أقوم بإجراء Google للبرامج التعليمية واعتدوا بالضرب حتى يتم العمل في النهاية.

ومع ذلك ، في عمليات البحث الخاصة بي ، غالباً ما أجد تنسيقات ملفات مختلفة (.key، .csr، .pem) ولكنني لم أتمكن مطلقًا من العثور على تفسير جيد للغرض من تنسيق كل ملف.

كنت أتساءل ما إذا كان الناس جيدة هنا في ServerFault يمكن أن تقدم بعض التوضيح حول هذه المسألة؟


1179
2018-05-19 02:24


الأصل


stackoverflow.com/a/45886431/1599699 - Andrew


الأجوبة:


لقد كانت طبقة المقابس الآمنة موجودة لمدة طويلة بما يكفي ، وكنت تعتقد أنه سيكون هناك أشكال متفق عليها للحاوية. وأنت على حق ، هناك. الكثير من المعايير عند حدوثها. هذا ما أعرفه ، وأنا متأكد من أن الآخرين سوف يتدخلون.

  • .csr - هذا هو طلب توقيع شهادة. يمكن لبعض التطبيقات توليد هذه لتقديمها إلى سلطات التصديق. التنسيق الفعلي هو PKCS10 الذي تم تعريفه في RFC 2986. ويتضمن بعض / جميع التفاصيل الرئيسية للشهادة المطلوبة مثل الموضوع ، والتنظيم ، والدولة ، وغيرها ، فضلا عن المفتاح العمومي من الشهادة للحصول على توقيع. هذه الحصول على توقيع CA ويتم إرجاع شهادة. الشهادة المرتجعة هي الجمهور شهادة (والذي يتضمن المفتاح العام وليس المفتاح الخاص) ، والذي يمكن أن يكون في حد ذاته بتنسيقين.
  • .PEM - محددة في RFCs 1421 عبر 1424، وهو تنسيق حاوية قد يشتمل على الشهادة العامة فقط (مثل عمليات تثبيت Apache وملفات شهادات CA. /etc/ssl/certs) أو قد تتضمن سلسلة شهادات كاملة بما في ذلك المفتاح العمومي والمفتاح الخاص وشهادات الجذر. ومما يدعو إلى الارتباك ، أنه قد يرمز أيضًا إلى المسؤولية الاجتماعية للشركات (على سبيل المثال عند استخدامها هنا) كما يمكن ترجمة تنسيق PKCS10 إلى PEM. الاسم من بريد الخصوصية المحسّن (PEM)، وهي طريقة فاشلة للبريد الإلكتروني الآمن ولكن تنسيق الحاوية المستخدمة المستخدمة ، هي ترجمة base64 لمفاتيح x509 ASN.1.
  • .مفتاح - هذا ملف بتنسيق PEM يحتوي فقط على المفتاح الخاص لشهادة محددة ، وهو مجرد اسم تقليدي وليس قياسيًا. في عمليات تثبيت Apache ، يتكرر هذا بشكل متكرر /etc/ssl/private. تعد الحقوق على هذه الملفات مهمة جدًا ، وسترفض بعض البرامج تحميل هذه الشهادات إذا تم تعيينها بشكل خاطئ.
  • .pkcs12 .pfx .p12 - محددة أصلا من قبل RSA في معايير تشفير المفتاح العام (اختصار PKCS) ، تم تحسين البديل "12" في الأصل من قبل مايكروسوفت ، وقدمت في وقت لاحق ك RFC 7292. هذا هو تنسيق حاوية محمي بكلمة مرور يحتوي على كلا من أزواج الشهادات العامة والخاصة. على عكس ملفات .pem ، هذه الحاوية مشفرة بالكامل. يمكن لـ Openssl تحويل هذا إلى ملف .pem باستخدام المفاتيح العامة والخاصة: openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes 

بعض التنسيقات الأخرى التي تظهر من وقت لآخر:

  • .der - طريقة لترميز بناء الجملة ASN.1 في ثنائي ، ملف .pem هو مجرد ملف .der ترميز Base64. يمكن لـ OpenSSL تحويل هذه إلى .pem (openssl x509 -inform der -in to-convert.der -out converted.pem). يرى Windows هذه كملفات الشهادات. بشكل افتراضي ، سيقوم Windows بتصدير الشهادات كملفات منسقة بملحق آخر. مثل...
  • .cert .cer .crt - ملف بتنسيق .pem (أو نادراً .درقاً) بملحق مختلف ، أحد الملفات التي يتم التعرف عليها بواسطة Windows Explorer كشهادة ، والتي ليس فيها .pem.
  • .p7b .keystore - المعرفة في RFC 2315 مثل PKCS رقم 7 ، هذا هو تنسيق يستخدمه Windows لتبادل الشهادات. تفهم جافا هذه اللغات ، وعادة ما تستخدم .keystore كامتداد بدلاً من ذلك. على عكس شهادات نمط .pem ، فهذا التنسيق له يعرف طريقة لتضمين شهادات مسار الشهادة.
  • .crl - قائمة إبطال الشهادات. تنتج "المراجع المصدقة" هذه كطريقة إلغاء الترخيص بالشهادات قبل انتهاء الصلاحية. يمكنك أحيانًا تنزيلها من مواقع ويب CA.

باختصار ، هناك أربع طرق مختلفة لتقديم الشهادات ومكوناتها:

  • PEM - يحكمها RFCs ، ويستخدم بشكل تفضيلي بواسطة برنامج مفتوح المصدر. يمكن أن يحتوي على مجموعة متنوعة من الإضافات (.pem ، .key ، .cer ، .cert ، المزيد)
  • PKCS7 - معيار مفتوح يستخدمه Java ويدعمه Windows. لا يحتوي على مادة المفتاح الخاص.
  • PKCS12 - مقياس Microsoft خاص تم تعريفه لاحقًا في RFC يوفر أمانًا محسنًا مقابل تنسيق PEM للنص العادي. هذا يمكن أن يحتوي على مواد المفتاح الخاص. استخدامه بشكل تفضيلي بواسطة أنظمة Windows ، ويمكن تحويلها بحرية إلى تنسيق PEM من خلال استخدام openssl.
  • DER - الصيغة الأم من PEM. من المفيد أن تفكر في ذلك على أنه نسخة ثنائية من ملف PEM المشفر باستخدام base64. لا تستخدم بشكل روتيني كثيرًا خارج Windows.

آمل أن يساعد هذا.


1456
2018-05-19 02:49



الشيء العظيم في المعايير هو أن هناك الكثير للاختيار من بينها ... - squillman
.crt هو امتداد شائع آخر لـ .cert و .cer - David Pashley
PEM هو تنسيق ملف قد يتكون من شهادة (يعرف أيضًا باسم المفتاح العمومي) أو مفتاح خاص أو متسلسل معًا. لا تدفع الكثير من الاهتمام لامتداد الملف ؛ فهذا يعني خصوصية البريد المحسّن ، وهو استخدام لم يشاهد استخدامه كثيرًا ولكن تنسيق الملف عالق. - Dan Carley
إجابة مفيدة جدًا ، ولكن لا أعتقد أنك قمت بتغطية تنسيق .pub الذي تم إنشاؤه بواسطة ssh-keygen. سيكون من المفيد أن نعرف كيف يترابط ذلك مع الباقي. - Jez
لا يمكن المساعدة في ملاحظة "الخصوصية المحسّنة البريد الإلكتروني" من شأنه أن يعطي الاختصار "PEE" بدلاً من "PEM". تميل RFCs إلى استخدام عبارة "Privacy Enhanced Mail" - aidan


PEM على أنها ليست شهادة ، إنها مجرد طريقة لتشفير البيانات. شهادات X.509 هي نوع واحد من البيانات التي يتم ترميزها بشكل شائع باستخدام PEM.

PEM هي شهادة X.509 (يتم تعريف تركيبها باستخدام ASN.1) ، والمشفرة باستخدام ASN.1 DER (قواعد التشفير المتميزة) ، ثم تشغيلها من خلال ترميز Base64 وتمسك بين خطوط الربط النص العادي (BEGIN CERTIFICATE و END CERTIFICATE ).

يمكنك تمثيل نفس البيانات باستخدام تمثيل PKCS # 7 أو PKCS # 12 ، ويمكن استخدام الأداة المساعدة لسطر الأوامر openssl للقيام بذلك.

تتمثل الفوائد الواضحة لـ PEM في أنه من الآمن لصقها في نص رسالة البريد الإلكتروني نظرًا لأنها تحتوي على خطوط ربط وهي نظيفة من 7 بتات.

يحتوي RFC1422 على مزيد من التفاصيل حول معيار PEM من حيث صلته بالمفاتيح والشهادات.


124
2018-06-06 15:19



كيف تفعل هذا "باستخدام سطر الأوامر openssl"؟ - Samik R
لتحويل ملف DER (.crt .cer .der) إلى PEM: openssl x509 -inform der -in cert.cer -out cert.pem. لتحويل ملف PEM إلى DER: openssl x509 -outform der -in cert.pem -out certi.der. لتحويل ملف PKCS # 12 (.pfx .p12) يحتوي على مفتاح خاص وشهادات إلى PEM: openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes. لتحويل ملف شهادة PEM ومفتاح خاص إلى PKCS # 12 (.pfx .p12): openssl pkcs12 -export -out cert.pfx -inkey privateKey.key -in cert.crt -certfile CACert.crt من عند هنا - mpeac


احيانا .crt الملف هو بالفعل .pem. نرى: https://stackoverflow.com/questions/991758/openssl-pem-key


51
2018-03-15 00:24



صحيح بالفعل ، لقد لاحظت هذا اليوم. اضطررت لإدخال شهادة PEM في loadspancer rackspace وكنت أتساءل عما إذا كان CRT ولدت في هذا الشكل. لكنها عملت على هذا النحو ، لذلك كان ذلك استنتاجي كذلك ، فإن معظم هذه .crt تأتي في شكل بيم على ما يبدو. - Glenn Plas