यह ट्यूटोरियल आपको दिखाता है Node.js एप्लिकेशन के लिए CSR कैसे जनरेट करें। Node.js में कोई बिल्ट-इन CSR जनरेशन टूल नहीं है, इसलिए आप Node चलाने वाली मशीन पर OpenSSL के साथ प्राइवेट की और Certificate Signing Request बनाते हैं, CSR को अपनी Certificate Authority को सबमिट करते हैं, और फिर जारी किए गए सर्टिफिकेट को fs.readFileSync() और https.createServer() के साथ अपने ऐप में लोड करते हैं।
नीचे दिए गए स्टेप्स किसी भी ऑपरेटिंग सिस्टम पर काम करते हैं जो OpenSSL के साथ आता है, जिसमें हर मौजूदा Linux डिस्ट्रीब्यूशन, macOS, और Windows (आधिकारिक OpenSSL बाइनरी या Git Bash के जरिए) शामिल हैं। आधुनिक OpenSSL डिफ़ॉल्ट रूप से रिक्वेस्ट को SHA-256 से साइन करता है, इसलिए आपको डाइजेस्ट फ्लैग जोड़ने की आवश्यकता नहीं है।
स्टेप 1: सुनिश्चित करें कि OpenSSL इंस्टॉल है
जांचें कि OpenSSL उस मशीन पर उपलब्ध है जो आपका Node.js ऐप चलाएगी:
openssl version
आपको OpenSSL 3.0.x या उससे नया कुछ इस तरह की लाइन दिखनी चाहिए। यदि कमांड नहीं मिलता है, तो इसे अपने प्लेटफ़ॉर्म के लिए इंस्टॉल करें:
- Debian, Ubuntu:
sudo apt update && sudo apt install openssl - RHEL, AlmaLinux, Rocky Linux, Amazon Linux:
sudo dnf install openssl(या पुराने रिलीज़ परsudo yum install openssl) - macOS: OpenSSL (कुछ वर्ज़न पर LibreSSL, और यदि Homebrew के जरिए इंस्टॉल किया गया हो तो OpenSSL 3) पहले से ही Terminal में है। अपस्ट्रीम बिल्ड इंस्टॉल करने के लिए:
brew install openssl@3. - Windows: आधिकारिक OpenSSL बाइनरी इंस्टॉल करें, या Git Bash का उपयोग करें, जो OpenSSL के साथ प्री-इंस्टॉल्ड आता है।
स्टेप 2: प्राइवेट की और CSR जनरेट करें
उस मशीन पर की और CSR जनरेट करें जो Node.js चलाएगी। प्राइवेट की CSR के साथ ही बनाई जाती है और इसे उसी मशीन पर रहना चाहिए। इन कमांड्स को कहीं और चलाना और फिर की को इधर-उधर कॉपी करना प्राइवेट की रखने के पूरे उद्देश्य को ही विफल कर देता है।
निम्नलिखित कमांड चलाएं। यह एक ही स्टेप में 2048-बिट RSA प्राइवेट की और एक मिलती-जुलती CSR बनाता है, जिसमें subject और Subject Alternative Names (SANs) इनलाइन दिए गए हैं ताकि OpenSSL सवाल पूछने के लिए न रुके:
openssl req -new -newkey rsa:2048 -nodes
-keyout yourdomain.key
-out yourdomain.csr
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com"
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"
हर हिस्सा क्या करता है:
- -newkey rsa:2048 एक नया 2048-बिट RSA की जनरेट करता है। 2048-बिट वर्तमान न्यूनतम है जिसे पब्लिक CAs स्वीकार करते हैं; आप बड़ी की के लिए rsa:4096 का उपयोग कर सकते हैं, या ECDSA पर स्विच कर सकते हैं (नीचे देखें)।
- -nodes प्राइवेट की को अनएन्क्रिप्टेड छोड़ देता है ताकि Node.js स्टार्टअप पर पासफ्रेज़ मांगे बिना इसे पढ़ सके। Node के https मॉड्यूल में एन्क्रिप्टेड की के लिए passphrase ऑप्शन का सपोर्ट है, लेकिन फिर भी पासफ्रेज़ को मशीन पर कहीं से आना होगा (एक कॉन्फ़िग फ़ाइल, एक एनवायरनमेंट वेरिएबल, या एक सीक्रेट मैनेजर)।
- -keyout और -out प्राइवेट की और CSR फ़ाइलों का नाम रखते हैं।
- -subj सर्टिफिकेट सब्जेक्ट प्रदान करता है। यहां प्लेसहोल्डर नहीं, बल्कि अपनी वास्तविक कंपनी का नाम, राज्य और शहर डालें। CN (Common Name) आपका प्राथमिक डोमेन है।
- -addext “subjectAltName=…” हर उस होस्टनेम की सूची देता है जिसे सर्टिफिकेट कवर करना चाहिए। पब्लिक CAs SAN सूची के आधार पर वैलिडेट करते हैं, इसलिए यहां Common Name को भी शामिल करें। -addext फ्लैग के लिए OpenSSL 1.1.1 या उससे नया चाहिए, जो हर मौजूदा OS के साथ आता है।
हर जगह yourdomain.com को अपने वास्तविक डोमेन से बदलें। अतिरिक्त होस्टनेम कवर करने के लिए, उन्हें कॉमा से अलग करके SAN सूची में जोड़ें, उदाहरण के लिए DNS:api.yourdomain.com। वाइल्डकार्ड के लिए, वाइल्डकार्ड और नंगे डोमेन दोनों को शामिल करें: DNS:*.yourdomain.com,DNS:yourdomain.com।
यदि आप ECDSA की पसंद करते हैं (छोटी और तेज़, जिसमें P-256 व्यापक रूप से समर्थित है), तो इसके बजाय इस तरह की और CSR जनरेट करें:
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes
-keyout yourdomain.key
-out yourdomain.csr
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com"
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"
इंटरैक्टिव मोड (-subj के बिना)
यदि आप चाहते हैं कि OpenSSL हर फ़ील्ड के लिए आपसे पूछे, तो -subj फ्लैग हटा दें:
openssl req -new -newkey rsa:2048 -nodes
-keyout yourdomain.key -out yourdomain.csr
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"
OpenSSL निम्नलिखित विवरण मांगेगा:
- Country Name (C): आपके संगठन का दो-अक्षर वाला ISO कंट्री कोड (उदाहरण के लिए, US)।
- State or Province Name (S): पूरा राज्य या प्रांत जहां आपकी कंपनी रजिस्टर्ड है (उदाहरण के लिए, California)। इसे संक्षिप्त न करें।
- Locality Name (L): वह शहर जहां आपका व्यवसाय रजिस्टर्ड है (उदाहरण के लिए, San Jose)।
- Organization Name (O): आपकी कंपनी का कानूनी नाम (उदाहरण के लिए, GPI Holding LLC)। DV (Domain Validated) सर्टिफिकेट के लिए, इसे खाली छोड़ दें और Enter दबाएं।
- Organizational Unit Name (OU): सितंबर 2022 से पुराना पड़ चुका है और पब्लिक CAs द्वारा नज़रअंदाज़ किया जाता है। इसे खाली छोड़ दें।
- Common Name (CN): वह पूरी तरह से क्वालिफाइड डोमेन नाम (FQDN) जिसे आप सुरक्षित कर रहे हैं, उदाहरण के लिए yourdomain.com। वाइल्डकार्ड के लिए, *.yourdomain.com का उपयोग करें।
- Email Address: वैकल्पिक। इसे खाली छोड़ दें।
- A challenge password: अप्रचलित। इसे खाली छोड़ दें।
स्टेप 3: अपनी फ़ाइलें ढूंढें और सुरक्षित करें
यह पुष्टि करने के लिए कि दोनों फ़ाइलें बन गईं, वर्तमान डायरेक्टरी की सूची देखें:
ls
आपको दो नई फ़ाइलें दिखनी चाहिए:
- yourdomain.key: आपकी प्राइवेट की। इसे सर्वर पर रखें, इसका सुरक्षित रूप से बैकअप लें, और इसे कभी भी किसी को न भेजें, Certificate Authority को भी नहीं। जिसके पास भी यह की है, वह आपकी साइट का रूप धारण कर सकता है।
- yourdomain.csr: आपकी Certificate Signing Request। यह वह फ़ाइल है जिसे आप SSL प्रदाता को सबमिट करते हैं।
Linux या macOS पर, तुरंत प्राइवेट की पर सख्त अनुमतियां सेट करें ताकि केवल वही यूज़र इसे पढ़ सके जो Node.js चलाता है:
chmod 600 yourdomain.key
यदि Node.js एक समर्पित सेवा खाते (उदाहरण के लिए, node या www-data) के अंतर्गत चलता है, तो ऑनर भी सेट करें ताकि प्रोसेस की को पढ़ सके:
sudo chown node:node yourdomain.key
स्टेप 4: CSR सत्यापित करें (वैकल्पिक लेकिन अनुशंसित)
इसे सबमिट करने से पहले, जांचें कि CSR में सही सब्जेक्ट और SANs हैं और इसका सिग्नेचर वैध है। यह OpenSSL के साथ स्थानीय रूप से रिक्वेस्ट को डिकोड करता है:
openssl req -noout -text -verify -in yourdomain.csr
पुष्टि करें कि Subject लाइन आपके विवरण दिखाती है, कि X509v3 Subject Alternative Name हर उस होस्टनेम को सूचीबद्ध करता है जिसकी आप उम्मीद करते हैं, और सिग्नेचर जांच verify OK प्रिंट करती है। सिग्नेचर एल्गोरिथम sha256WithRSAEncryption (या ECDSA की के लिए ecdsa-with-SHA256) पढ़ना चाहिए। यदि आप कमांड लाइन का उपयोग नहीं करना चाहते, तो उन्हीं फ़ील्ड्स को ब्राउज़र में पढ़ने के लिए CSR को हमारे ऑनलाइन CSR डिकोडर में पेस्ट करें।
स्टेप 5: अपना CSR सबमिट करें
अपने ऑर्डर के लिए CSR कॉपी करने के लिए, इसकी सामग्री प्रिंट करें:
cat yourdomain.csr
आपको इस तरह टेक्स्ट का एक ब्लॉक दिखेगा:
-----BEGIN CERTIFICATE REQUEST-----
MIIBozCB... (a long string of characters)
-----END CERTIFICATE REQUEST-----
पूरे ब्लॉक को कॉपी करें, जिसमें —–BEGIN CERTIFICATE REQUEST—– और —–END CERTIFICATE REQUEST—– लाइनें शामिल हैं (हर मार्कर के दोनों ओर पांच हाइफ़न होते हैं)। वह पूरा ब्लॉक आपका CSR है। इसे अपनी खरीद के दौरान ऑर्डर फॉर्म में पेस्ट करें, और मिलती-जुलती प्राइवेट की को सर्वर पर वहीं रखें।
यदि आप कमांड लाइन का उपयोग नहीं करना चाहते, तो आप हमारे ऑनलाइन CSR जनरेटर के साथ भी रिक्वेस्ट बना सकते हैं। ध्यान दें कि यह आपके ब्राउज़र में प्राइवेट की जनरेट करता है, इसलिए उस की को खुद सेव करें और उसे Node.js सर्वर पर ले जाएं।
CA द्वारा सर्टिफिकेट जारी करने के बाद क्या होता है
एक बार जब CA CSR को वैलिडेट कर लेता है और सर्टिफिकेट जारी करता है, तो आपको आमतौर पर अपना सर्वर सर्टिफिकेट (आपके डोमेन के नाम पर एक .crt फ़ाइल) साथ ही एक या अधिक इंटरमीडिएट सर्टिफिकेट मिलेंगे, जो कभी-कभी .ca-bundle फ़ाइल में बंडल किए जाते हैं। Node.js इन्हें JavaScript में लोड करता है: सर्वर सर्टिफिकेट और इंटरमीडिएट्स को एक ही fullchain.crt फ़ाइल में जोड़ें, फिर इसे fs.readFileSync() से पढ़ें और https.createServer() को पास करें:
const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('/path/to/yourdomain.key'),
cert: fs.readFileSync('/path/to/fullchain.crt'),
minVersion: 'TLSv1.2'
};
https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('Welcome to a Node.js HTTPS servern');
}).listen(443);
यह फुलचेन पैटर्न वही है जिसका उपयोग अधिकांश प्रोडक्शन सेटअप करते हैं। पूरा वॉकथ्रू (ES modules उदाहरण, एक वैकल्पिक ca: array दृष्टिकोण, और एक Express उदाहरण सहित) हमारे Node.js SSL इंस्टॉलेशन ट्यूटोरियल में शामिल है।
प्रोडक्शन डिप्लॉयमेंट पर एक नोट। 2026 में, पब्लिक ट्रैफ़िक हैंडल करने वाले अधिकांश Node.js ऐप्स एक रिवर्स प्रॉक्सी या क्लाउड लोड बैलेंसर (NGINX, HAProxy, Caddy, AWS ALB, Cloudflare, Fastly) के पीछे चलते हैं, जो एज पर TLS को टर्मिनेट करता है और सादे HTTP या HTTP/2 को उच्च लोकल पोर्ट पर Node को आगे भेजता है। इस पैटर्न में, सर्टिफिकेट (और ऊपर आपके द्वारा जनरेट किया गया CSR) प्रॉक्सी या लोड बैलेंसर पर रहता है, न कि Node प्रोसेस पर। Node.js को सीधे TLS टर्मिनेट करने देना डेवलपमेंट, आंतरिक सेवाओं, और छोटे डिप्लॉयमेंट के लिए बिल्कुल ठीक है; एक पब्लिक प्रोडक्शन ऐप के लिए, एज पर TLS को टर्मिनेट करना अधिक सामान्य तरीका है।
आज ऑर्डर करते समय एसएसएल प्रमाणपत्रों पर 10% की बचत करें!
तेजी से जारी करना, मजबूत एन्क्रिप्शन, 99.99% ब्राउज़र ट्रस्ट, समर्पित समर्थन और 25 दिन की मनी-बैक गारंटी। कूपन कोड: SAVE10


