Https वेब सर्वर के लिए .pem फाइलें कैसे बनाएं


90

मैं एक वेब सर्वर बनाने के लिए Node.js में एक्सप्रेस ढांचे का उपयोग कर रहा हूं। मैं चाहता हूं कि परिवहन एसएसएल पर आधारित हो।

Https वेब सर्वर बनाने का कोड नीचे दिया गया है।

var app = express.createServer({
  key: fs.readFileSync('./conf/key.pem'),
  cert: fs.readFileSync('./conf/cert.pem')
});
module.exports = app;

प्रश्न: कैसे बनाने के लिए key.pem और cert.pem एक्सप्रेस द्वारा आवश्यक?

जवाबों:


200

आपको जिन दो फ़ाइलों की आवश्यकता है वे PEM एन्कोडेड SSL प्रमाणपत्र और निजी कुंजी हैं। पीईएम एन्कोडेड सेरेट्स और कीज़ बेस बेस इनकोडिंग टेक्स्ट हैं जिसमें स्टार्ट / एंड डेलिमिटर होते हैं जो -----BEGIN RSA PRIVATE KEY-----समान या समान दिखते हैं ।

SSL प्रमाणपत्र बनाने के लिए आपको सबसे पहले एक निजी कुंजी और एक प्रमाणपत्र हस्ताक्षर अनुरोध, या CSR (जिसमें आपकी सार्वजनिक कुंजी भी शामिल है) उत्पन्न करना होगा। आप इसे कई प्रकार से कर सकते हैं, लेकिन यहाँ OpenSSL में कैसे है।

openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem

यह आपको 2048-बिट आरएसए निजी कुंजी और एक सीएसआर उत्पन्न करने के लिए एक इंटरेक्टिव प्रॉम्प्ट में प्रवेश करने का कारण बनेगा जिसमें आपके द्वारा प्रांप्ट पर दर्ज की जाने वाली सभी जानकारी है। ( नोट: कॉमन नाम वह जगह है जहाँ आप उस डोमेन नाम को रखना चाहेंगे जिसका उपयोग आप अपनी साइट तक पहुँचने के लिए करेंगे। ) एक बार ऐसा करने के बाद आप आम तौर पर इस सीएसआर को एक विश्वसनीय प्रमाणपत्र प्राधिकारी को सौंप देंगे और एक बार वे मान्य हो जाएंगे। आपके अनुरोध पर आपको एक प्रमाण पत्र प्राप्त होगा।

यदि आपको अपने प्रमाणपत्र पर भरोसा नहीं किया जा रहा है (आमतौर पर विकास उद्देश्यों के लिए मामला) तो आप बस एक स्व-हस्ताक्षरित प्रमाण पत्र बना सकते हैं। ऐसा करने के लिए, हम लगभग एक ही पंक्ति का उपयोग कर सकते हैं, लेकिन हम दो अतिरिक्त पैरामीटर पास करेंगे।

openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem

यह आपको एक प्रमाणित (10 वर्षों के लिए वैध) और प्रमुख जोड़ी देगा जिसे आप अपने पोस्ट किए गए कोड स्निपेट में उपयोग कर सकते हैं।


2
ग्राहक प्रमाणपत्र और कुंजी के बारे में क्या?
22

1
यह पोस्ट पूरी हो गई है, कुंजी + प्रमाणपत्र जीतने के लिए चिपके हुए दोनों कमांडों को चलाएं। क्लाइंट केवल सर्वर पर विश्वास स्थापित नहीं करता है।
Ninjaxor

@ अंपुल क्या आप मुझे बता सकते हैं कि ये .pem की और सर्टिफिकेट कहां से उत्पन्न होते हैं? मेरा मतलब है कि कौन सी निर्देशिका? मैं Ubuntu 14 का उपयोग कर रहा हूँ
स्टॉर्मट्रूपर

2
वे आपके शेल की वर्तमान कार्यशील निर्देशिका को लिखेंगे।
पॉल केहर

1
ध्यान दें कि इस तरह से स्व-हस्ताक्षरित प्रमाण पत्र संस्करण 1 है, जिसमें CN शामिल है, लेकिन कोई SAN नहीं। "संस्करण 58 के बाद से, क्रोम को लोकप्रिय सामान्य नाम (CN) के बजाय SAN (विषय वैकल्पिक नाम) का उपयोग करने के लिए SSL प्रमाणपत्र की आवश्यकता होती है, इस प्रकार CN समर्थन को हटा दिया गया है।" [फिक्सिंग क्रोम 58+ [गुम_subjectAltName] स्वयं हस्ताक्षरित प्रमाण पत्र का उपयोग करते समय ओपनसेल के साथ] ( alexanderzeitler.com/articles/… )
Zhiyong

12

बस इस प्रक्रिया का पालन करें:

  1. वह फ़ोल्डर बनाएँ जहाँ आप अपनी कुंजी और प्रमाणपत्र संग्रहीत करना चाहते हैं:

    mkdir conf


  1. उस निर्देशिका पर जाएं:

    cd conf


  1. ca.cnfकॉन्फ़िगरेशन शॉर्टकट के रूप में उपयोग करने के लिए इस फ़ाइल को पकड़ो :

    wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/ca.cnf


  1. इस कॉन्फ़िगरेशन का उपयोग करके एक नया प्रमाणपत्र प्राधिकारी बनाएं:

    openssl req -new -x509 -days 9999 -config ca.cnf -keyout ca-key.pem -out ca-cert.pem


  1. अब है कि हम में हमारे प्रमाणपत्र प्राधिकार है ca-key.pemऔर ca-cert.pem, के सर्वर के लिए एक निजी कुंजी उत्पन्न करते हैं:

    openssl genrsa -out key.pem 4096


  1. server.cnfकॉन्फ़िगरेशन शॉर्टकट के रूप में उपयोग करने के लिए इस फ़ाइल को पकड़ो :

    wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/server.cnf


  1. इस कॉन्फ़िगरेशन का उपयोग करके प्रमाणपत्र पर हस्ताक्षर करने का अनुरोध उत्पन्न करें:

    openssl req -new -config server.cnf -key key.pem -out csr.pem


  1. अनुरोध पर हस्ताक्षर करें:

    openssl x509 -req -extfile server.cnf -days 999 -passin "pass:password" -in csr.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem

इन प्रमाणपत्रों का उपयोग कैसे करें , इस बारे में अधिक जानकारी के साथ-साथ मुझे यह प्रक्रिया यहाँ मिली ।

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