Pem फ़ाइल क्या है और यह अन्य OpenSSL जनरेट की गई फ़ाइल स्वरूपों से कैसे भिन्न होती है?


1342

मैं दो डेबियन सर्वर को बनाए रखने के लिए जिम्मेदार हूं। हर बार मुझे सुरक्षा प्रमाणपत्रों के साथ कुछ भी करना पड़ता है, मैं ट्यूटोरियल के लिए गूगल करता हूं और अंत तक काम करता हूं।

हालाँकि, मेरी खोजों में मैं अक्सर विभिन्न फ़ाइल स्वरूपों ( .key, ) पर आता हूं .csr, .pemलेकिन मैं कभी भी एक अच्छा विवरण नहीं ढूंढ पाया कि प्रत्येक फ़ाइल प्रारूप का उद्देश्य क्या है।

मैं सोच रहा था कि क्या सर्वरफॉल्ट पर यहाँ के अच्छे लोग इस मामले पर कुछ स्पष्टीकरण दे सकते हैं?


जवाबों:


1654

एसएसएल लंबे समय से चारों ओर है आप सोचेंगे कि कंटेनर प्रारूपों पर सहमति होगी। और तुम सही हो, वहाँ हैं। बहुत सारे मानक जैसा कि होता है। तो यह वही है जो मुझे पता है, और मुझे यकीन है कि अन्य लोग इसमें झंकार करेंगे।

  • .csr - यह एक प्रमाणपत्र हस्ताक्षर अनुरोध है। कुछ एप्लिकेशन इन्हें प्रमाणपत्र-प्राधिकारियों को प्रस्तुत करने के लिए उत्पन्न कर सकते हैं। वास्तविक प्रारूप PKCS10 है जिसे RFC 2986 में परिभाषित किया गया है । इसमें अनुरोधित प्रमाणपत्र के कुछ / सभी प्रमुख विवरण शामिल हैं जैसे कि विषय, संगठन, राज्य, व्हाट्सएप, साथ ही हस्ताक्षर करने के लिए प्रमाण पत्र की सार्वजनिक कुंजी । ये CA द्वारा हस्ताक्षरित हो जाते हैं और एक प्रमाणपत्र वापस कर दिया जाता है। लौटाया गया प्रमाण पत्र सार्वजनिक प्रमाण पत्र है (जिसमें सार्वजनिक कुंजी नहीं, बल्कि निजी कुंजी भी शामिल है), जो स्वयं कुछ स्वरूपों में हो सकता है।
  • .pem - 1424 के माध्यम से RFC 1421 में परिभाषित किया गया , यह एक कंटेनर प्रारूप है जिसमें केवल सार्वजनिक प्रमाणपत्र (जैसे अपाचे इंस्टॉल, और CA प्रमाणपत्र फ़ाइलें ) शामिल हो सकते हैं, या इसमें सार्वजनिक कुंजी, निजी कुंजी और संपूर्ण प्रमाणपत्र श्रृंखला शामिल हो सकती है रूट प्रमाणपत्र। भ्रामक रूप से, यह CSR को भी एनकोड कर सकता है (जैसे कि यहाँ प्रयोग किया जाता है ) क्योंकि PKCS10 प्रारूप को PEM में अनुवादित किया जा सकता है। यह नाम गोपनीयता वर्धित मेल (पीईएम) से है , जो सुरक्षित ईमेल के लिए एक विफल तरीका है, लेकिन जिस कंटेनर प्रारूप का यह उपयोग करता है वह जीवन पर है, और x509 ASN.1 कुंजी का एक आधार -64 अनुवाद है।/etc/ssl/certs
  • .key - यह एक PEM स्वरूपित फ़ाइल है जिसमें किसी विशिष्ट प्रमाणपत्र की केवल निजी-कुंजी होती है और यह केवल एक पारंपरिक नाम है और एक मानकीकृत नहीं है। अपाचे में स्थापित, यह अक्सर में रहता है /etc/ssl/private। इन फ़ाइलों पर अधिकार बहुत महत्वपूर्ण हैं, और कुछ प्रोग्राम गलत होने पर इन प्रमाणपत्रों को लोड करने से मना कर देंगे।
  • .pkcs12 .pfx .p12 - मूल रूप से सार्वजनिक कुंजी क्रिप्टोग्राफी मानकों (संक्षिप्त PKCS) में RSA द्वारा परिभाषित , "12" संस्करण मूल रूप से Microsoft द्वारा बढ़ाया गया था, और बाद में RFC 7292 के रूप में प्रस्तुत किया गया । यह एक पासवर्ड वाला कंटेनर प्रारूप है जिसमें सार्वजनिक और निजी दोनों प्रमाणपत्र जोड़े होते हैं। .Pem फ़ाइलों के विपरीत, यह कंटेनर पूरी तरह से एन्क्रिप्टेड है। Openssl इसे सार्वजनिक और निजी कुंजी दोनों के साथ .pem फ़ाइल में बदल सकता है:openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes

कुछ अन्य प्रारूप जो समय-समय पर दिखाई देते हैं:

  • .der - एक तरह से बाइनरी में ASN.1 वाक्य रचना एन्कोड करने के लिए, पर .pem फ़ाइल सिर्फ एक Base64 .der फ़ाइल इनकोडिंग। OpenSSL इन्हें .pem ( openssl x509 -inform der -in to-convert.der -out converted.pem) में बदल सकता है । विंडोज इन्हें सर्टिफिकेट फाइलों के रूप में देखता है। डिफ़ॉल्ट रूप से, Windows एक अलग एक्सटेंशन के साथ .DER स्वरूपित फ़ाइलों के रूप में प्रमाणपत्र निर्यात करेगा। पसंद...
  • .cert .cer .crt - A .pem (या शायद ही कभी .der) फ़ाइल को एक अलग एक्सटेंशन के साथ स्वरूपित किया जाता है, एक जिसे Windows Explorer द्वारा प्रमाण पत्र के रूप में मान्यता दी जाती है, जो .pem नहीं है।
  • .p7b .keystore - RFC 2315 में PKCS नंबर 7 के रूप में परिभाषित किया गया है , यह विंडोज द्वारा वेरिएबल के लिए उपयोग किया जाने वाला प्रारूप है। जावा इन्हें मूल रूप से समझता है, और अक्सर .keystoreइसके बजाय विस्तार के रूप में उपयोग करता है । .Pem शैली प्रमाणपत्र के विपरीत, इस प्रारूप में प्रमाणन-पथ प्रमाणपत्र शामिल करने का एक परिभाषित तरीका है।
  • .crl - एक प्रमाणपत्र निरस्तीकरण सूची। प्रमाणपत्र प्राधिकारी समाप्ति से पहले प्रमाण पत्र को डी-प्राधिकृत करने के तरीके के रूप में इनका उत्पादन करते हैं। आप कभी-कभी उन्हें CA वेबसाइटों से डाउनलोड कर सकते हैं।

सारांश में, प्रमाणपत्र और उनके घटकों को प्रस्तुत करने के चार अलग-अलग तरीके हैं:

  • पीईएम - आरएफसी द्वारा शासित, इसका उपयोग ओपन-सोर्स सॉफ़्टवेयर द्वारा अधिमानतः किया जाता है। इसमें विभिन्न प्रकार के एक्सटेंशन हो सकते हैं (.pem, .key, .cer, .cert, अधिक)
  • PKCS7 - जावा द्वारा समर्थित और विंडोज द्वारा समर्थित एक खुला मानक है। निजी कुंजी सामग्री शामिल नहीं है।
  • PKCS12 - एक Microsoft निजी मानक जिसे बाद में एक RFC में परिभाषित किया गया था जो कि सादे पाठ PEM प्रारूप के अनुसार बढ़ी हुई सुरक्षा प्रदान करता है। इसमें निजी कुंजी सामग्री हो सकती है। इसका उपयोग विंडोज सिस्टम द्वारा अधिमानतः किया जाता है, और खुलने के उपयोग के माध्यम से इसे पीईएम प्रारूप में स्वतंत्र रूप से परिवर्तित किया जा सकता है।
  • डीईआर - पीईएम का मूल प्रारूप। यह बेस 64-एन्कोडेड PEM फ़ाइल के बाइनरी संस्करण के रूप में सोचना उपयोगी है। नियमित रूप से विंडोज के बाहर बहुत अधिक उपयोग नहीं किया जाता है।

आशा है कि ये आपकी मदद करेगा।


297
मानकों के बारे में महान बात यह है कि इसमें से चुनने के लिए बहुत सारे हैं ...
स्क्वीलमैन

36
.crt .cert और .cer के लिए एक और सामान्य विस्तार है
डेविड

44
पीईएम एक फ़ाइल प्रारूप है जिसमें एक प्रमाण पत्र (उर्फ सार्वजनिक कुंजी), एक निजी कुंजी या वास्तव में दोनों एक साथ समाहित हो सकते हैं। फ़ाइल एक्सटेंशन पर इतना ध्यान न दें; इसका मतलब है गोपनीयता बढ़ी हुई मेल, एक ऐसा उपयोग जिसके लिए बहुत उपयोग नहीं देखा गया था लेकिन फ़ाइल प्रारूप चारों ओर अटक गया।
दान कार्ले

20
बहुत उपयोगी उत्तर, लेकिन मुझे नहीं लगता कि आपने .pub प्रारूप को बनाया है ssh-keygen। यह जानना उपयोगी होगा कि बाकी के साथ कैसे संबंध हैं।
Jez

24
"गोपनीयता वर्धित ईमेल" को नोट करने में मदद नहीं कर सकता "परिचित" "पीईई" को "पीईएम" के विपरीत देगा। RFC, वाक्यांश "गोपनीयता बढ़ी मेल" का उपयोग करते हैं
एडन

141

पेम ऑन इट्स अ सर्टिफिकेट नहीं है, यह डेटा को एन्कोडिंग करने का एक तरीका है। X.509 प्रमाणपत्र एक प्रकार का डेटा है जो आमतौर पर PEM का उपयोग करके एन्कोड किया जाता है।

PEM एक X.509 प्रमाणपत्र है (जिसकी संरचना ASN.1 का उपयोग करके परिभाषित की गई है), ASN.1 DER (विशिष्ट एन्कोडिंग नियमों) का उपयोग करके एन्कोड किया गया, फिर बेस 64 एन्कोडिंग के माध्यम से चलाएं और सादे-टेक्स्ट एंकर लाइनों (BEGIN CERTATE और END CERTIFICATE) के बीच फंसे रहें )।

आप PKCS # 7 या PKCS # 12 अभ्यावेदन का उपयोग करके समान डेटा का प्रतिनिधित्व कर सकते हैं, और इसे करने के लिए ओपनसेल कमांड लाइन उपयोगिता का उपयोग किया जा सकता है।

पीईएम का स्पष्ट लाभ यह है कि ईमेल संदेश के शरीर में चिपकाना सुरक्षित है क्योंकि इसमें लंगर लाइनें हैं और यह 7-बिट साफ है।

RFC1422 में PEM मानक के बारे में अधिक विवरण है क्योंकि यह कुंजियों और प्रमाणपत्रों से संबंधित है।


1
आप यह कैसे करते हैं "ओपनस्सेल कमांड लाइन का उपयोग"?
समिक आर

2
एक DER फ़ाइल (.crt .cer) को PEM में बदलने के लिए openssl x509 -inform der -in cert.cer -out cert.pem:। PEM फ़ाइल को DER में कनवर्ट करने के लिए openssl x509 -outform der -in cert.pem -out certi.der:। पीकेसी # 12 फ़ाइल (.pfx .p12) को निजी कुंजी और सर्टिफिकेट से पीईएम में बदलने के लिए openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes:। एक पीईएम प्रमाणपत्र फ़ाइल और PKCS # करने के लिए एक निजी कुंजी परिवर्तित करने के लिए 12 (.pfx .p12): openssl pkcs12 -export -out cert.pfx -inkey privateKey.key -in cert.crt -certfile CACert.crtसे यहाँ
mpeac

54

कभी-कभी एक .crtफ़ाइल पहले से ही है .pem। देखें: https://stackoverflow.com/questions/991758/openssl-pem-key


4
सच में, मैंने आज ही इस पर ध्यान दिया। मुझे रैकस्पेस लोडबलेंसर में एक पीईएम प्रमाणपत्र दर्ज करना था और मैं सोच रहा था कि क्या उत्पन्न सीआरटी उस प्रारूप में था। लेकिन यह उस तरह से काम करता है, इसलिए यह मेरा निष्कर्ष भी था, इनमें से अधिकांश। कॉम के PEM प्रारूप में ऐसा लगता है।
ग्लेन प्लास

@GlennPlas फ़ाइल की सामग्री के बजाय फ़ोकस करता है, उसका नाम या विस्तार नहीं। यह उन .foobarसभी मामलों के लिए बुलाया जा सकता है ...
पैट्रिक मेवज़ेक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.