क्या कोई मुझे प्रमाण पत्र .crt
और निजी कुंजी .key
फ़ाइलों को .pem
फ़ाइल से निकालने / परिवर्तित करने का सही तरीका / आदेश बता सकता है ? मैंने अभी पढ़ा है कि वे विनिमेय हैं, लेकिन कैसे नहीं।
क्या कोई मुझे प्रमाण पत्र .crt
और निजी कुंजी .key
फ़ाइलों को .pem
फ़ाइल से निकालने / परिवर्तित करने का सही तरीका / आदेश बता सकता है ? मैंने अभी पढ़ा है कि वे विनिमेय हैं, लेकिन कैसे नहीं।
जवाबों:
मैं इसे उपयोग करने के लिए पीटी को crt में बदलने में सक्षम था:
openssl x509 -outform der -in your-cert.pem -out your-cert.crt
openssl pkey -in mumble.pem -out mumble-key.pem
यदि ओपनएसएसएल संस्करण 1.0.0 से अधिक पुराना है, तो कुंजी को RSA कुंजी के रूप में निकालने के लिए:openssl rsa -in mumble.pem -out mumble-key.pem
unable to load certificate 140584440387400:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE
Expecting: ANY PRIVATE KEY
त्रुटि देते हैं।
OpenSSL का उपयोग करके परिवर्तित करना
ये आदेश आपको विशिष्ट प्रकार के सर्वर या सॉफ़्टवेयर के साथ संगत बनाने के लिए प्रमाणपत्र और कुंजियों को विभिन्न प्रारूपों में बदलने की अनुमति देते हैं।
एक DER फ़ाइल (.crt .cer .der) को PEM में बदलें
openssl x509 -inform der -in certificate.cer -out certificate.pem
PEM फ़ाइल को DER में कनवर्ट करें
openssl x509 -outform der -in certificate.pem -out certificate.der
एक PKCS # 12 फ़ाइल (.pfx .p12) को निजी कुंजी और प्रमाणपत्र PEM में बदलें
openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes
You can add -nocerts to only output the private key or add -nokeys to only output the certificates.
PEM प्रमाणपत्र फ़ाइल और PKCS # 12 (.pfx .p12) के लिए एक निजी कुंजी परिवर्तित करें।
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
PEM को CRT में परिवर्तित करें (.CRT फ़ाइल)
openssl x509 -outform der -in certificate.pem -out certificate.crt
ओपनएसएसएल पीईएम कन्वर्ट
PEM को DER में बदलें
openssl x509 -outform der -in certificate.pem -out certificate.der
PEM को P7B में बदलें
openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
PEM को PFX में कनवर्ट करें
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
ओपनएसएसएल कन्वर्ट डीईआर
DER को PEM में बदलें
openssl x509 -inform der -in certificate.cer -out certificate.pem
OpenSSL कन्वर्ट P7B
P7B को PEM में बदलें
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
P7B को PFX में कनवर्ट करें
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer
ओपनएसएसएल कन्वर्ट पीएफएक्स
PFX को PEM में कनवर्ट करें
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
OpenSSL द्वारा rsa कीज जनरेट करें
कमांड लाइन पर ओपनएसएसएल का उपयोग करते हुए आपको सबसे पहले एक सार्वजनिक और निजी कुंजी उत्पन्न करनी होगी, आपको इस फाइल को -पासआउट तर्क का उपयोग करके पासवर्ड की सुरक्षा करनी चाहिए, कई अलग-अलग रूप हैं जो इस तर्क के बारे में ओपनएसएसएल दस्तावेज से परामर्श कर सकते हैं।
openssl genrsa -out private.pem 1024
यह Private.pem नामक एक मुख्य फ़ाइल बनाता है जो 1024 बिट्स का उपयोग करता है। इस फ़ाइल में वास्तव में निजी और सार्वजनिक दोनों कुंजियाँ हैं, इसलिए आपको इस फ़ाइल से जनता को निकालना चाहिए:
openssl rsa -in private.pem -out public.pem -outform PEM -pubout
or
openssl rsa -in private.pem -pubout > public.pem
or
openssl rsa -in private.pem -pubout -out public.pem
अब आपके पास public.pem होगा जिसमें केवल आपकी सार्वजनिक कुंजी है, आप इसे 3 पार्टियों के साथ स्वतंत्र रूप से साझा कर सकते हैं। आप इसे केवल अपनी सार्वजनिक कुंजी का उपयोग करके स्वयं को एन्क्रिप्ट करके और फिर अपनी निजी कुंजी का उपयोग करके डिक्रिप्ट कर सकते हैं, पहले हमें एन्क्रिप्ट करने के लिए थोड़ा डेटा चाहिए:
उदाहरण फ़ाइल:
echo 'too many secrets' > file.txt
अब आपके पास file.txt में कुछ डेटा है, इसे OpenSSL और सार्वजनिक कुंजी का उपयोग करके एन्क्रिप्ट करने देता है:
openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl
यह फ़ाइल का एक एन्क्रिप्टेड संस्करण बनाता है। इसे कॉल करना file.ssl, यदि आप इस फाइल को देखते हैं तो यह केवल बाइनरी जंक है, किसी के लिए बहुत उपयोगी कुछ भी नहीं है। अब आप निजी कुंजी का उपयोग करके इसे अनएन्क्रिप्ट कर सकते हैं:
openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt
अब आपके पास decrypted.txt में एक अनएन्क्रिप्टेड फाइल होगी:
cat decrypted.txt
|output -> too many secrets
ओपनएसएसएल में आरएसए उपकरण विकल्प
नाम
आरएसए - आरएसए कुंजी प्रसंस्करण उपकरण
SYNOPSIS
खुलता है rsa [-help] [-इनफॉर्म पीईएम | नेट | डीईआर] [-आउटफॉर्म पीईएम | नेट | डीईआर] [-in फ़ाइल का नाम] [-passin arg] [-out फ़ाइल नाम] [-पास arg] [-aes128] [- aes192] [-aes256] [-camellia128] [-camellia192] [-camellia256] [-des] [-des3] [-idea] [-txt] [-moutulus] [-मॉडुलस] [-check] [-pubin] [-पाउट] [-RSAPublicKey_in] [-RSAPublicKey_out] [-भारत आईडी]
विवरण
Rsa कमांड RSA कुंजियों को संसाधित करता है। उन्हें विभिन्न रूपों और उनके घटकों के बीच मुद्रित किया जा सकता है। ध्यान दें कि यह कमांड निजी कुंजी एन्क्रिप्शन के लिए पारंपरिक SSLeay संगत प्रारूप का उपयोग करता है: नए अनुप्रयोगों को pkcs8 उपयोगिता का उपयोग करके अधिक सुरक्षित PKCS # 8 प्रारूप का उपयोग करना चाहिए।
कमांड विकल्प
-help
एक उपयोग संदेश प्रिंट करें।
-inform DER|NET|PEM
यह इनपुट प्रारूप को निर्दिष्ट करता है। DER विकल्प PKCS # 1 RSAPStreetKey या SubjectPublicKeyInfo प्रारूप के साथ संगत ASN1 DER एन्कोडेड फ़ॉर्म का उपयोग करता है। PEM फ़ॉर्म डिफ़ॉल्ट स्वरूप है: इसमें DER प्रारूप का आधार 64 है जो अतिरिक्त शीर्ष लेख और पाद लेख लाइनों के साथ एन्कोडेड है। इनपुट पर PKCS # 8 प्रारूप निजी कुंजी भी स्वीकार किए जाते हैं। NET फॉर्म एक प्रारूप है जिसे NOTES अनुभाग में वर्णित किया गया है।
-outform DER|NET|PEM
यह आउटपुट प्रारूप को निर्दिष्ट करता है, विकल्पों का अर्थ -inform विकल्प के समान होता है।
-in filename
यदि यह विकल्प निर्दिष्ट नहीं है, तो यह इनपुट फ़ाइल नाम को मानक या मानक इनपुट से पढ़ने के लिए निर्दिष्ट करता है। यदि कुंजी एन्क्रिप्ट किया गया है तो एक पास वाक्यांश के लिए संकेत दिया जाएगा।
-passin arg
इनपुट फ़ाइल पासवर्ड स्रोत। आर्ग के प्रारूप के बारे में अधिक जानकारी के लिए ओपनस् में PASS PHRASE ARGUMENTS सेक्शन को देखें।
-out filename
यदि यह विकल्प निर्दिष्ट नहीं है, तो यह कुंजी या मानक आउटपुट लिखने के लिए आउटपुट फ़ाइल नाम निर्दिष्ट करता है। यदि कोई एन्क्रिप्शन विकल्प सेट है तो एक पास वाक्यांश के लिए संकेत दिया जाएगा। आउटपुट फ़ाइल नाम इनपुट फ़ाइल नाम के समान नहीं होना चाहिए।
-passout password
आउटपुट फ़ाइल पासवर्ड स्रोत। आर्ग के प्रारूप के बारे में अधिक जानकारी के लिए ओपनस् में PASS PHRASE ARGUMENTS सेक्शन को देखें।
-aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea
ये विकल्प आउटपुट करने से पहले निर्दिष्ट सिफर के साथ निजी कुंजी को एन्क्रिप्ट करते हैं। एक पास वाक्यांश के लिए संकेत दिया जाता है। यदि इन विकल्पों में से कोई भी निर्दिष्ट नहीं है, तो कुंजी सादे पाठ में लिखी गई है। इसका मतलब यह है कि बिना एन्क्रिप्शन विकल्प के साथ एन्क्रिप्टेड कुंजी में पढ़ने के लिए rsa यूटिलिटी का उपयोग करके कुंजी को पास वाक्यांश को हटाने के लिए उपयोग किया जा सकता है, या एन्क्रिप्शन विकल्पों को सेट करके इसका उपयोग पास वाक्यांश को जोड़ने या बदलने के लिए किया जा सकता है। इन विकल्पों का उपयोग केवल PEM प्रारूप आउटपुट फ़ाइलों के साथ किया जा सकता है।
-text
एन्कोडेड संस्करण के अलावा सादे पाठ में विभिन्न सार्वजनिक या निजी प्रमुख घटकों को प्रिंट करता है।
-noout
यह विकल्प कुंजी के एन्कोडेड संस्करण के आउटपुट को रोकता है।
-modulus
यह विकल्प कुंजी के मापांक के मूल्य को प्रिंट करता है।
-check
यह विकल्प RSA निजी कुंजी की संगति की जाँच करता है।
-pubin
डिफ़ॉल्ट रूप से एक निजी कुंजी इनपुट फ़ाइल से पढ़ी जाती है: इस विकल्प के साथ इसके बजाय एक सार्वजनिक कुंजी पढ़ी जाती है।
-pubout
डिफ़ॉल्ट रूप से एक निजी कुंजी आउटपुट है: इस विकल्प के साथ एक सार्वजनिक कुंजी इसके बजाय आउटपुट होगी। यदि इनपुट सार्वजनिक कुंजी है तो यह विकल्प स्वतः सेट हो जाता है।
-RSAPublicKey_in, -RSAPublicKey_out
इसके बजाय RSPublicKey प्रारूप को छोड़कर -pubin और -pubout का उपयोग किया जाता है।
-engine id
एक इंजन को निर्दिष्ट करना (इसकी विशिष्ट आईडी स्ट्रिंग द्वारा) निर्दिष्ट इंजन के लिए एक कार्यात्मक संदर्भ प्राप्त करने का प्रयास करने के लिए rsa का कारण होगा, इस प्रकार यदि आवश्यक हो तो प्रारंभ करना। इंजन को सभी उपलब्ध एल्गोरिदम के लिए डिफ़ॉल्ट के रूप में सेट किया जाएगा।
टिप्पणियाँ
PEM निजी कुंजी प्रारूप शीर्ष लेख और पाद लेख लाइनों का उपयोग करता है:
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
PEM सार्वजनिक कुंजी प्रारूप शीर्ष लेख और पाद लेख लाइनों का उपयोग करता है:
-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----
PEM RSAPublicKey प्रारूप हैडर और पाद लेख लाइनों का उपयोग करता है:
-----BEGIN RSA PUBLIC KEY-----
-----END RSA PUBLIC KEY-----
नेट फ़ॉर्म पुराने नेटस्केप सर्वर और Microsoft IIS .key फ़ाइलों के साथ संगत प्रारूप है, यह इसके एन्क्रिप्शन के लिए अनसाल्टेड RC4 का उपयोग करता है। यह बहुत सुरक्षित नहीं है और इसलिए केवल आवश्यक होने पर ही इसका उपयोग किया जाना चाहिए।
IIS के कुछ नए संस्करण में निर्यात .key फ़ाइलों में अतिरिक्त डेटा है। उपयोगिता के साथ इनका उपयोग करने के लिए, द्विआधारी संपादक के साथ फाइल देखें और स्ट्रिंग "निजी-कुंजी" देखें, फिर बाइट अनुक्रम 0x30, 0x82 पर वापस जाएं (यह एक ASN1 दृश्य है)। इस बिंदु से सभी डेटा को दूसरी फ़ाइल में कॉपी करें और इन-रिन यूटिलिटी के साथ rsa यूटिलिटी के इनपुट के रूप में उपयोग करें।
उदाहरण
RSA निजी कुंजी पर पास वाक्यांश निकालने के लिए:
openssl rsa -in key.pem -out keyout.pem
ट्रिपल DES का उपयोग कर एक निजी कुंजी एन्क्रिप्ट करने के लिए:
openssl rsa -in key.pem -des3 -out keyout.pem
PEM से DER प्रारूप में एक निजी कुंजी परिवर्तित करने के लिए:
openssl rsa -in key.pem -outform DER -out keyout.der
मानक आउटपुट के लिए एक निजी कुंजी के घटकों को प्रिंट करने के लिए:
openssl rsa -in key.pem -text -noout
केवल एक निजी कुंजी के सार्वजनिक भाग का उत्पादन करने के लिए:
openssl rsa -in key.pem -pubout -out pubkey.pem
RSAPublicKey प्रारूप में एक निजी कुंजी के सार्वजनिक भाग का आउटपुट:
openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pem
एक pem फ़ाइल से कुंजी और प्रमाणपत्र निकालने के लिए:
openssl pkey -in foo.pem -out foo.key
चाबी निकालने का एक और तरीका ...
openssl rsa -in foo.pem -out foo.key
openssl crl2pkcs7 -nocrl -certfile foo.pem | openssl pkcs7 -print_certs -out foo.cert
openssl x509 -in foo.pem -outform DER -out first-cert.der
0. पूर्वापेक्षा : openssl
स्थापित होना चाहिए। विंडोज पर, यदि Git Bash
स्थापित है, तो कोशिश करें कि! वैकल्पिक बायनेरिज़ यहाँ मिल सकते हैं।
1. निकालें .key
से .pem
:
openssl pkey -in cert.pem -out cert.key
2. निकालें .crt
से .pem
:
openssl crl2pkcs7 -nocrl -certfile cert.pem | openssl pkcs7 -print_certs -out cert.crt
A .crt प्रमाणपत्र को pem प्रारूप में संग्रहीत करता है। तो एक -pem, जबकि इसमें अन्य चीजें भी हो सकती हैं जैसे कि csr (प्रमाणपत्र पर हस्ताक्षर का अनुरोध), एक निजी कुंजी, एक सार्वजनिक कुंजी, या अन्य सेर्ट्स, जब यह सिर्फ एक प्रमाण पत्र संग्रहीत कर रहा है, तो यह एक .crt के समान है।
पेम एक बेस 64 एन्कोडेड फ़ाइल है जिसमें हेडर और प्रत्येक सेक्शन के बीच एक फूटर है।
किसी विशेष खंड को निकालने के लिए, एक पर्ल स्क्रिप्ट जैसे कि निम्नलिखित पूरी तरह से मान्य है, लेकिन कुछ ओपन कमांड का उपयोग करने के लिए स्वतंत्र महसूस करें।
perl -ne "\$n++ if /BEGIN/; print if \$n == 1 && /BEGIN/.../END/;" mydomain.pem
जहाँ == 1 को कभी भी आपको किस सेक्शन में बदला जा सकता है। जाहिर है अगर आपको ठीक-ठीक हेडर और फूटर की आवश्यकता है, तो आपको पता है कि फाइल में केवल एक ही है (आमतौर पर अगर आप सिर्फ सर्टिफिकेट और उसमें चाबी रखते हैं), तो आप इसे सरल बना सकते हैं:
perl -ne "print if /^-----BEGIN CERTIFICATE-----\$/.../END/;" mydomain.pem