यह ट्यूटोरियल आपको दिखाता है Apache पर CSR कैसे जेनरेट करें, वह भी OpenSSL कमांड लाइन का उपयोग करके, उसी सर्वर पर जो Apache HTTP Server चलाता है। आप एक ही कमांड में दो फाइलें बनाएँगे: एक नई प्राइवेट कुंजी और उसके मिलान वाला CSR (Certificate Signing Request), जिसे आप अपने सर्टिफिकेट अथॉरिटी को सबमिट करते हैं।
नीचे दिए गए स्टेप्स हर आधुनिक लिनक्स डिस्ट्रिब्यूशन पर काम करते हैं जो Apache होस्ट करता है (Ubuntu, Debian, RHEL, AlmaLinux, Rocky Linux, Amazon Linux 2023), क्योंकि इनमें से हर एक OpenSSL 1.1.1 या OpenSSL 3.x के साथ आता है। दोनों वर्शन डिफ़ॉल्ट रूप से रिक्वेस्ट को SHA-256 से साइन करते हैं, इसलिए आपको कोई डाइजेस्ट फ्लैग जोड़ने की जरूरत नहीं है। यही कमांड FreeBSD और Apache के साथ macOS पर भी काम करता है।
स्टेप 1: अपने Apache सर्वर से कनेक्ट करें
macOS या Linux पर Terminal, या Windows पर PowerShell या Windows Terminal खोलें, और SSH के जरिए सर्वर से कनेक्ट करें। यूज़र नेम और होस्ट को अपने से बदलें:
ssh your-user@your-apache-server
CSR को उसी सर्वर पर जेनरेट करें जो सर्टिफिकेट को होस्ट करेगा। प्राइवेट कुंजी CSR के साथ ही बनती है और उसे उस सर्वर पर ही रहना चाहिए, इसलिए अपने लैपटॉप पर कमांड चलाकर फिर कुंजी को इधर-उधर कॉपी करना उद्देश्य को विफल कर देता है। आप चाहें तो इस काम को एक अलग डायरेक्टरी में कर सकते हैं जिसे आप बाद में फिर से ढूंढ सकें, उदाहरण के लिए:
sudo mkdir -p /etc/ssl/yourdomain
cd /etc/ssl/yourdomain
स्टेप 2: प्राइवेट कुंजी और CSR जेनरेट करें
यदि आप पहले से किसी अन्य टूल से अपना CSR जेनरेट कर चुके हैं, तो सीधे Apache पर सर्टिफिकेट इंस्टॉल करने पर जाएँ।
निम्नलिखित OpenSSL कमांड चलाएँ। यह एक ही स्टेप में 2048-बिट RSA कुंजी और एक CSR बनाता है, जिसमें सब्जेक्ट और 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-बिट फिलहाल न्यूनतम है; आप बड़ी कुंजी के लिए rsa:4096 का उपयोग कर सकते हैं, या ECDSA पर स्विच कर सकते हैं (नीचे देखें)।
- -nodes प्राइवेट कुंजी को अनएन्क्रिप्टेड छोड़ देता है ताकि Apache इसे स्टार्टअप पर बिना पासफ्रेज़ प्रॉम्प्ट के पढ़ सके।
- -keyout और -out प्राइवेट कुंजी और CSR फाइलों का नाम तय करते हैं।
- -subj सर्टिफिकेट सब्जेक्ट प्रदान करता है। यहाँ अपनी वास्तविक कंपनी का नाम, राज्य और शहर डालें, प्लेसहोल्डर नहीं। CN (Common Name) आपका प्राइमरी डोमेन है।
- -addext “subjectAltName=…” हर उस होस्टनेम को सूचीबद्ध करता है जिसे सर्टिफिकेट को कवर करना चाहिए। पब्लिक CAs SAN सूची के आधार पर वैलिडेट करते हैं, इसलिए Common Name को भी यहाँ शामिल करें।
yourdomain.com को हर जगह अपने वास्तविक डोमेन से बदलें। अतिरिक्त होस्टनेम कवर करने के लिए, उन्हें कॉमा से अलग करके SAN सूची में जोड़ें, उदाहरण के लिए DNS:api.yourdomain.com। वाइल्डकार्ड सर्टिफिकेट के लिए, वाइल्डकार्ड और बेयर डोमेन दोनों शामिल करें: DNS:*.yourdomain.com,DNS:yourdomain.com। सब्जेक्ट फील्ड्स में केवल अल्फान्यूमेरिक अक्षरों का उपयोग करें, और C फील्ड के लिए ऑफिशियल दो-अक्षर वाला देश कोड इस्तेमाल करें।
अगर आप 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 req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr को बिना -subj और बिना -addext के चलाएँ। OpenSSL बारी-बारी से हर फील्ड के लिए पूछेगा। जब वह पूछे:
- Country Name (C): आपके देश का दो-अक्षर वाला ISO कोड, उदाहरण के लिए US या GB। बिज़नेस वैलिडेशन या एक्सटेंडेड वैलिडेशन सर्टिफिकेट के लिए, यह आपके संगठन के रजिस्ट्रेशन का ऑफिशियल देश होना चाहिए।
- State or Province Name (ST): पूरा नाम, उदाहरण के लिए California। संक्षिप्त न करें।
- Locality Name (L): शहर या कस्बा, उदाहरण के लिए San Francisco।
- Organization Name (O): आपकी कंपनी का ऑफिशियल रजिस्टर्ड नाम, उदाहरण के लिए GPI Holding LLC। डोमेन वैलिडेशन सर्टिफिकेट के लिए आप NA दर्ज कर सकते हैं।
- Organizational Unit Name (OU): यह फील्ड डेप्रीकेटेड है और पब्लिक CAs द्वारा नजरअंदाज कर दी जाती है। Enter दबाकर इसे खाली छोड़ें।
- Common Name (CN): वह Fully Qualified Domain Name जिसके लिए सर्टिफिकेट है, उदाहरण के लिए www.yourdomain.com। वाइल्डकार्ड के लिए *.yourdomain.com इस्तेमाल करें।
- Email Address: वैकल्पिक है और पब्लिक CAs द्वारा इस्तेमाल नहीं किया जाता। आप इसे खाली छोड़ सकते हैं।
- A challenge password और An optional company name: दोनों अप्रचलित एट्रिब्यूट हैं जिन्हें पब्लिक CAs नजरअंदाज कर देते हैं। इन्हें खाली छोड़ दें।
-addext फ्लैग के बिना बना CSR में कोई SAN एंट्री नहीं होगी। पब्लिक CAs SAN सूची के आधार पर वैलिडेट करते हैं और इसके बिना रिक्वेस्ट को रिजेक्ट कर देंगे (या चुपचाप ओवरराइड कर देंगे), इसलिए सुझाया गया तरीका ऊपर दिया गया इनलाइन -subj और -addext कमांड है।
स्टेप 3: अपनी फाइलें ढूंढें
यह पुष्टि करने के लिए कि दोनों फाइलें बन गई हैं, वर्तमान डायरेक्टरी की सूची देखें:
ls
आपको दो नई फाइलें दिखनी चाहिए:
- yourdomain.key: आपकी प्राइवेट कुंजी। इसे सर्वर पर रखें, सुरक्षित रूप से इसका बैकअप लें, और इसे किसी को भी न भेजें, सर्टिफिकेट अथॉरिटी को भी नहीं। जिसके पास यह कुंजी होगी वह आपकी साइट का रूप धरकर काम कर सकता है।
- yourdomain.csr: आपका Certificate Signing Request। यह वह फाइल है जिसे आप SSL प्रोवाइडर को सबमिट करते हैं।
प्राइवेट कुंजी को इस तरह प्रतिबंधित करें कि केवल फाइल का मालिक ही इसे पढ़ सके:
chmod 600 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-----
MIICyzCCAbMCAQAwTDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQsw...
...(many more lines of base64 characters)...
-----END CERTIFICATE REQUEST-----
पूरा ब्लॉक कॉपी करें, जिसमें —–BEGIN CERTIFICATE REQUEST—– और —–END CERTIFICATE REQUEST—– लाइनें शामिल हैं (हर मार्कर के दोनों तरफ पाँच हाइफ़न होते हैं)। वह पूरा ब्लॉक ही आपका CSR है। इसे अपनी खरीदारी के दौरान ऑर्डर फॉर्म में पेस्ट करें, और मिलान वाली प्राइवेट कुंजी को सर्वर पर उसी जगह रखें।
अगर आप कमांड लाइन का उपयोग नहीं करना चाहते, तो आप हमारे ऑनलाइन CSR जेनरेटर से भी रिक्वेस्ट बना सकते हैं। ध्यान दें कि यह आपके ब्राउज़र में प्राइवेट कुंजी जेनरेट करता है, इसलिए वह कुंजी खुद सेव करें और उसे सर्वर पर ले जाएँ।
आपके CA द्वारा रिक्वेस्ट वैलिडेट करने के बाद, आपको आपका सर्टिफिकेट मिल जाएगा। वैलिडेशन लेवल के आधार पर, डोमेन वैलिडेशन के लिए इसमें कुछ मिनट लगते हैं, या बिज़नेस वैलिडेशन और एक्सटेंडेड वैलिडेशन के लिए कई कार्यदिवस तक लग सकते हैं।
स्टेप 6: Apache पर सर्टिफिकेट इंस्टॉल करें
जब सर्टिफिकेट मिल जाए, तो जारी किए गए सर्टिफिकेट को (किसी भी इंटरमीडिएट को एक ही fullchain फाइल में जोड़कर) और प्राइवेट कुंजी को सर्वर पर रखें, फिर अपनी साइट की वर्चुअल होस्ट में Apache को उनकी ओर इशारा करें:
SSLCertificateFile /etc/ssl/yourdomain/fullchain.crt
SSLCertificateKeyFile /etc/ssl/yourdomain/yourdomain.key
आधुनिक Apache (2.4.8 और उसके बाद के वर्शन) लीफ सर्टिफिकेट और किसी भी इंटरमीडिएट को SSLCertificateFile में दी गई एक ही फाइल से पढ़ता है, इसलिए अपने सर्टिफिकेट और CA बंडल को एक फाइल में जोड़ दें। पुराना SSLCertificateChainFile डायरेक्टिव डेप्रीकेटेड है और इसे मौजूदा Apache पर उपयोग नहीं करना चाहिए। कॉन्फ़िगरेशन का परीक्षण apachectl configtest से करें और बदलाव लागू करने के लिए Apache को रीलोड करें। पूरे वर्कफ़्लो के लिए, हमारा गाइड देखें Apache पर SSL सर्टिफिकेट कैसे इंस्टॉल करें।
आज ऑर्डर करते समय एसएसएल प्रमाणपत्रों पर 10% की बचत करें!
तेजी से जारी करना, मजबूत एन्क्रिप्शन, 99.99% ब्राउज़र ट्रस्ट, समर्पित समर्थन और 25 दिन की मनी-बैक गारंटी। कूपन कोड: SAVE10


