मैं एक SSL प्रमाणपत्र से PEM फ़ाइल कैसे बना सकता हूं?
ये वो फाइलें हैं जो मेरे पास उपलब्ध हैं:
.crt
server.csr
server.key
मैं एक SSL प्रमाणपत्र से PEM फ़ाइल कैसे बना सकता हूं?
ये वो फाइलें हैं जो मेरे पास उपलब्ध हैं:
.crt
server.csr
server.key
जवाबों:
आपकी कुंजी पहले से ही PEM प्रारूप में हो सकती है, लेकिन सिर्फ .crt या .key के साथ नाम दिया जा सकता है।
यदि फ़ाइल की सामग्री शुरू होती है -----BEGIN
और आप इसे पाठ संपादक में पढ़ सकते हैं:
फ़ाइल बेस 64 का उपयोग करती है, जो एएससीआईआई में पढ़ने योग्य है, न कि बाइनरी प्रारूप में। प्रमाणपत्र पहले से ही पीईएम प्रारूप में है। बस .pem एक्सटेंशन बदलें
यदि फ़ाइल बाइनरी में है:
Server.crt के लिए, आप उपयोग करेंगे
openssl x509 -inform DER -outform PEM -in server.crt -out server.crt.pem
Server.key के लिए, के openssl rsa
स्थान पर उपयोग करें openssl x509
।
Server.key संभवत: आपकी निजी कुंजी है, और .crt फ़ाइल लौटी, हस्ताक्षरित, x509 प्रमाणपत्र है।
यदि यह एक वेब सर्वर के लिए है और आप एक अलग निजी और सार्वजनिक कुंजी लोड करने को निर्दिष्ट नहीं कर सकते हैं:
आपको दो फ़ाइलों को संक्षिप्त करने की आवश्यकता हो सकती है। इस उपयोग के लिए:
cat server.crt server.key > server.includesprivatekey.pem
मैं इस फ़ाइल के साथ आपके द्वारा रखी जाने वाली अनुमतियों को प्रबंधित करने में आपकी मदद करने के लिए "निक्षेपागार" के साथ नामकरण फ़ाइलों की सिफारिश करूंगा।
cat server.crt server.key > server.pem
खुली टिप्पणी को अपनी लाइन पर नहीं रखेगा, जो एक आवश्यकता प्रतीत होती है। कूरियर मेल ने मुझे नरक दिया और मुझे यह पता लगाने में घंटों लग गए कि क्या गलत हो रहा था।
server.crt server.key > server.includesprivatekey.pem
SSL के लिए उपयोगी है haproxy 1.5 के साथ।
मुझे AWS ELB के लिए ऐसा करने की आवश्यकता थी। संवाद द्वारा कई बार पिटने के बाद, आखिरकार यह मेरे लिए काम कर रहा है:
openssl rsa -in server.key -text > private.pem
openssl x509 -inform PEM -in server.crt > public.pem
धन्यवाद NCZ
संपादित करें: जैसा कि @floatingrock कहते हैं
AWS के साथ, फ़ाइल नाम को पूर्व-निर्धारित करना न भूलें file://
। तो ऐसा लगेगा:
aws iam upload-server-certificate --server-certificate-name blah --certificate-body file://path/to/server.crt --private-key file://path/to/private.key --path /cloudfront/static/
http://docs.aws.amazon.com/cli/latest/reference/iam/upload-server-certificate.html
file://
। तो यह ऐसा दिखेगा:aws iam upload-server-certificate --server-certificate-name blah --certificate-body file://~/Desktop/server.crt --private-key file://~/Desktop/private.key --path /cloudfront/static/
एक pem
फ़ाइल में प्रमाणपत्र और निजी कुंजी है। यह उस प्रारूप पर निर्भर करता है जो आपके प्रमाणपत्र / कुंजी में है, लेकिन शायद यह उतना ही सरल है:
cat server.crt server.key > server.pem
-bash: server.key.pem: Permission denied
इसके अतिरिक्त, यदि आप इसे पासफ़्रेज़ के लिए नहीं पूछना चाहते हैं, तो निम्न कमांड चलाने की आवश्यकता है:
openssl rsa -in server.key -out server.key
-----BEGIN RSA PRIVATE KEY-----
और उसके साथ एक शुरुआत हो -----BEGIN ENCRYPTED PRIVATE KEY-----
, तो यह वह कमांड है जिसका आप उपयोग करना चाहते हैं।
मैंने जो देखा है वह यह है: यदि आप प्रमाण पत्र बनाने के लिए ओपनसेल का उपयोग करते हैं, तो यह सीआरटी फाइल में टेक्स्ट पार्ट और बेस 64 सर्टिफिकेट पार्ट दोनों को कैप्चर करता है। सख्त पेम प्रारूप कहता है ( विकी परिभाषा ) कि फ़ाइल BEGIN और END के साथ शुरू और समाप्त होनी चाहिए।
.pem - (गोपनीयता बढ़ी मेल) Base64 ने "----- BEGIN CERTIFICATE -----" और "----- END प्रमाण पत्र -----" के बीच संलग्न DER प्रमाणपत्र को एनकोड किया।
तो कुछ पुस्तकालयों के लिए (मैंने जावा में इसका सामना किया) जो कि सख्त पेम प्रारूप की अपेक्षा करते हैं, उत्पन्न क्रेट एक 'अमान्य पेम प्रारूप' के रूप में मान्यता को विफल कर देगा।
भले ही आप BEGIN / END CERTIFICATE वाली पंक्तियों को कॉपी या grep करते हों, और उसे किसी cert.pem फ़ाइल में चिपकाएँ, यह काम करना चाहिए।
यहाँ मैं क्या करता हूं, बहुत साफ नहीं है, लेकिन मेरे लिए काम करता है, मूल रूप से यह BEGIN लाइन से शुरू होने वाले पाठ को फ़िल्टर करता है:
grep -A 1000 BEGIN cert.crt> cert.pem
openssl x509
। यह एक मान्य PEM प्रमाणपत्र का उत्पादन करेगा: cat certificate.crt | openssl x509 > certificate.pem
sed -n '/--BEGIN/,$p' cert.crt
इस मामले में कुछ चाहते हैं । "-N" डिफ़ॉल्ट रूप से कुछ भी मुद्रित नहीं करने के लिए sed, और फिर रेंज अभिव्यक्ति बताता है: कि व्याख्या करने के लिए /--BEGIN/,$
बनाता है p
आदेश (प्रिंट) पहली पंक्ति जिसमें बीच लाइनों के लिए लागू --BEGIN
और फ़ाइल के अंत ( $
)।
मैं Godaddy से app इंजन में जाने की कोशिश कर रहा था। इस लाइन का उपयोग करने के लिए क्या चाल थी:
openssl req -new -newkey rsa:2048 -nodes -keyout name.unencrypted.priv.key -out name.csr
बिल्कुल वैसा ही है, लेकिन मेरे डोमेन नाम के साथ नाम बदल रहा है (ऐसा नहीं है कि यह वास्तव में भी मायने रखता है)
और मैंने www.name.com के रूप में सामान्य नाम / संगठन से संबंधित सभी सवालों के जवाब दिए
फिर मैंने सीएसआर खोला, इसे कॉपी किया, इसे गो डैडी में पेस्ट किया, फिर इसे डाउनलोड किया, इसे अनज़िप किया, टर्मिनल के साथ अनज़िप्ड फ़ोल्डर में नेविगेट किया और प्रवेश किया:
cat otherfilegodaddygivesyou.crt gd_bundle-g2-g1.crt > name.crt
तब मैंने Google Apps कस्टम डोमेन एसएसएल के साथ परेशानी से इन निर्देशों का उपयोग किया , जो थे:
openssl rsa -in privateKey.key -text > private.pem
openssl x509 -inform PEM -in www_mydomain_com.crt > public.pem
बिल्कुल वैसा ही है, जैसे कि PrivateKey.key के अलावा मैंने name.unencrypted.priv.key का उपयोग किया है, और www_mydomain_com.crt के बजाय, मैंने name.crt का उपयोग किया है
तब मैंने "PEM एन्कोडेड X.509 प्रमाणपत्र" के लिए public.pem को व्यवस्थापक कंसोल पर अपलोड किया, और "Unencrypted PEM एन्कोडेड RSA निजी कुंजी" के लिए Private.pem अपलोड किया।
.. और अंत में काम किया।
GoDaddy सर्टिफिकेट को AWS में अपलोड करने की कोशिश मैं कई बार विफल रही, लेकिन अंत में यह बहुत आसान था। .Pem में कुछ भी बदलने की आवश्यकता नहीं है। आपको बस चेन पैरामीटर में GoDaddy बंडल सर्टिफिकेट को शामिल करना सुनिश्चित करना है, जैसे
aws iam upload-server-certificate
--server-certificate-name mycert
--certificate-body file://try2/40271b1b25236fd1.crt
--private-key file://server.key
--path /cloudfront/production/
--certificate-chain file://try2/gdig2_bundle.crt
और अपने पिछले असफल अपलोड को हटाने के लिए आप कर सकते हैं
aws iam delete-server-certificate --server-certificate-name mypreviouscert
An error occurred (MalformedCertificate) when calling the UploadServerCertificate operation: Unable to parse certificate. Please ensure the certificate is in PEM format.
आदेशों के नीचे चलाएँ:
क) openssl pkcs12 -in Certificates.p12 -out CertificateName.pem -nodes
,
ख) openssl pkcs12 -in Certificates.p12 -out pushcert.pem -nodes -clcerts
Opensl pkcs12 -in your_CERTIFICATE.p12 -out your_CERTIFICATE.pem -nodes -clcerts
.pem
करने.crt
और.key
।