यह ट्यूटोरियल आपको दिखाता है NGINX पर CSR कैसे जनरेट करें। NGINX खुद सर्टिफिकेट साइनिंग रिक्वेस्ट जनरेट नहीं करता: आप उसी सर्वर पर, जो सर्टिफिकेट होस्ट करेगा, OpenSSL के साथ प्राइवेट की और CSR बनाते हैं, फिर CSR को अपने सर्टिफिकेट अथॉरिटी को सबमिट करते हैं। जब जारी किया गया सर्टिफिकेट वापस आता है, तो आप NGINX को ssl_certificate और ssl_certificate_key डायरेक्टिव्स के साथ उसकी ओर इंगित करते हैं।
नीचे दिए गए स्टेप्स हर उस समर्थित Linux डिस्ट्रीब्यूशन पर काम करते हैं जो NGINX शिप करता है (Debian, Ubuntu, RHEL, AlmaLinux, Rocky Linux, Amazon Linux), क्योंकि हर एक में OpenSSL 1.1.1 या 3.x शामिल होता है। आधुनिक OpenSSL डिफ़ॉल्ट रूप से SHA-256 के साथ रिक्वेस्ट साइन करता है, इसलिए आपको डाइजेस्ट फ्लैग जोड़ने की ज़रूरत नहीं है।
स्टेप 1: अपने NGINX सर्वर से कनेक्ट करें
अपनी लोकल मशीन से SSH के ज़रिए उस सर्वर से कनेक्ट करें जो NGINX चलाता है (macOS या Linux पर Terminal, Windows पर PowerShell या Windows Terminal)। यूज़र नेम और होस्ट को अपने खुद के से बदलें:
ssh your-user@your-nginx-server
CSR उस सर्वर पर जनरेट करें जो सर्टिफिकेट सर्व करेगा। प्राइवेट की CSR के साथ बनाई जाती है और उसे उस सर्वर पर ही रहना चाहिए। इन कमांड्स को लोकल रूप से चलाना और फिर की को इधर-उधर कॉपी करना प्राइवेट की रखने के मूल उद्देश्य को ही खत्म कर देता है।
स्टेप 2: प्राइवेट की और CSR जनरेट करें
निम्नलिखित कमांड चलाएँ। यह एक ही स्टेप में 2048-बिट RSA प्राइवेट की और उससे मैच करने वाला CSR बनाता है, जिसमें सब्जेक्ट और सब्जेक्ट अल्टरनेटिव नेम्स (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 प्राइवेट की को अनएन्क्रिप्टेड छोड़ता है ताकि NGINX स्टार्टअप पर पासफ़्रेज़ प्रॉम्प्ट के बिना इसे पढ़ सके। यदि आप की को एन्क्रिप्ट करना चाहते हैं, तो -nodes हटा दें और स्टार्ट व रीलोड पर पासफ़्रेज़ देने के लिए NGINX के ssl_password_file डायरेक्टिव का उपयोग करें।
- -keyout और -out प्राइवेट की और CSR फ़ाइलों के नाम तय करते हैं।
- -subj सर्टिफिकेट सब्जेक्ट प्रदान करता है। यहाँ प्लेसहोल्डर्स के बजाय अपना वास्तविक कंपनी नाम, राज्य और शहर डालें। CN (Common Name) आपका मुख्य डोमेन है।
- -addext “subjectAltName=…” हर उस होस्टनेम को सूचीबद्ध करता है जिसे सर्टिफिकेट में कवर होना चाहिए। पब्लिक CAs SAN लिस्ट के आधार पर वैलिडेट करते हैं, इसलिए यहाँ भी Common Name शामिल करें। -addext फ्लैग के लिए OpenSSL 1.1.1 या नया होना ज़रूरी है; हर समर्थित Linux रिलीज़ में कम से कम यह वर्शन शामिल है।
पूरे में 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"
यदि आपका OpenSSL -addext को सपोर्ट नहीं करता
बहुत पुराने सिस्टम्स पर, जिनमें OpenSSL 1.1.1 से पुराना है, -addext फ्लैग उपलब्ध नहीं होता। इस कंटेंट के साथ san.cnf नाम की एक छोटी कॉन्फ़िग फ़ाइल बनाएँ:
[ req ]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
req_extensions = req_ext
[ dn ]
C = US
ST = YourState
L = YourCity
O = YourCompany
CN = yourdomain.com
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = yourdomain.com
DNS.2 = www.yourdomain.com
फिर चलाएँ:
openssl req -new -newkey rsa:2048 -nodes
-keyout yourdomain.key -out yourdomain.csr -config san.cnf
स्टेप 3: अपनी फ़ाइलें ढूँढें
यह पुष्टि करने के लिए कि दोनों फ़ाइलें बन गई हैं, मौजूदा डायरेक्टरी को लिस्ट करें:
ls
आपको दो नई फ़ाइलें दिखनी चाहिए:
- yourdomain.key: आपकी प्राइवेट की। इसे सर्वर पर रखें, इसका सुरक्षित बैकअप लें, और इसे कभी किसी को न भेजें, सर्टिफिकेट अथॉरिटी को भी नहीं। जिसके पास भी यह की होगी, वह आपकी साइट का रूप धारण कर सकता है।
- yourdomain.csr: आपका सर्टिफिकेट साइनिंग रिक्वेस्ट। यह वह फ़ाइल है जो आप SSL प्रोवाइडर को सबमिट करते हैं।
प्राइवेट की पर तुरंत सख्त अनुमतियाँ सेट करें ताकि केवल root ही इसे पढ़ सके:
sudo chmod 600 yourdomain.key
sudo chown root:root 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 जनरेटर के साथ भी रिक्वेस्ट बना सकते हैं। ध्यान दें कि यह आपके ब्राउज़र में प्राइवेट की जनरेट करता है, इसलिए वह की स्वयं सेव करें और उसे सर्वर पर स्थानांतरित करें।
CA द्वारा सर्टिफिकेट जारी करने के बाद क्या होता है
एक बार जब CA CSR को वैलिडेट करता है और सर्टिफिकेट जारी करता है, तो आपको सामान्यतः अपना सर्वर सर्टिफिकेट (आपके डोमेन के नाम पर .crt फ़ाइल) मिलता है, साथ ही एक या अधिक इंटरमीडिएट सर्टिफिकेट्स, जो कभी-कभी एक .ca-bundle फ़ाइल में बंडल किए जाते हैं। NGINX सर्वर सर्टिफिकेट और इंटरमीडिएट चेन को एक ही फ़ाइल में मिलाकर (“fullchain”) ssl_certificate के ज़रिए इंगित करने की अपेक्षा करता है; ऊपर आपके द्वारा जनरेट की गई प्राइवेट की को अलग से ssl_certificate_key के ज़रिए इंगित किया जाता है। पूरी प्रक्रिया (fullchain बनाना, सर्वर ब्लॉक एडिट करना, टेस्टिंग, और रीलोड करना) हमारे NGINX SSL इंस्टॉलेशन ट्यूटोरियल में कवर की गई है।
आज ऑर्डर करते समय एसएसएल प्रमाणपत्रों पर 10% की बचत करें!
तेजी से जारी करना, मजबूत एन्क्रिप्शन, 99.99% ब्राउज़र ट्रस्ट, समर्पित समर्थन और 25 दिन की मनी-बैक गारंटी। कूपन कोड: SAVE10


