Tयह आलेख आपको Nginx पर अपना SSL प्रमाणपत्र स्थापित करने के चरणों से मार्गदर्शन करेगा और HTTP:// से HTTPS:// के लिए स्वचालित पुनर्निर्देशन सेटअप करना भी सिखाएगा।
1. अपने वेबसाइट के होस्ट किये गए सर्वर पर प्रमाणपत्र अपलोड करें
CSR कोड जेनरेशन और SSL सक्रियण चरण पूरा करने के बाद, आपको ईमेल के माध्यम से Sectigo (पहले Comodo के नाम से जाना जाता था) के प्रमाणपत्रों वाली एक ज़िप फ़ाइल प्राप्त होगी। वैकल्पिक रूप से, आप इन्हें अपने NiceNic खाता पैनल से डाउनलोड भी कर सकते हैं।
नोट: यदि आप प्रमाणपत्र सक्रिय करते समय NGINX सर्वर चुनते हैं, तो आपको एक ज़िप फ़ाइल मिलेगी जिसमें '.crt' एक्सटेंशन वाला प्रमाणपत्र फ़ाइल और '.ca-bundle' एक्सटेंशन वाली प्रमाणपत्र प्राधिकरण (CA) बंडल फ़ाइल शामिल होगी।
दोनों फ़ाइलों को अपने सर्वर में अपनी पसंद के अनुसार अपलोड करें। उदाहरण के लिए, आप FTP क्लाइंट का उपयोग कर सकते हैं।
आप प्रत्येक प्रमाणपत्र के लिए बंडल फ़ाइल भी यहाँ दिए निर्देशों का पालन करके डाउनलोड कर सकते हैं।
2. सभी प्रमाणपत्रों को एक एकल फ़ाइल में संयोजित करें
आपको सभी प्रमाणपत्रों (????_?????.crt और ????_?????.ca-bundle) को एक '.crt' फ़ाइल में संयोजित करना होगा।
आपके डोमेन के लिए प्रमाणपत्र फ़ाइल में सबसे पहले होना चाहिए, उसके बाद प्रमाणपत्र श्रृंखला (CA बंडल) शामिल करनी चाहिए।
जिस निर्देशिका में आपने प्रमाणपत्र फ़ाइलें अपलोड की हैं, वहां जाएं। फ़ाइलों को संयोजित करने के लिए निम्न कमांड चलाएं:
$ cat ????_?????.crt ????_?????.ca-bundle >> ????_?????_chain.crt
कृपया ध्यान दें कि यदि प्रमाणपत्र फ़ाइलें आपके NiceNic खाते से डाउनलोड की गई हैं, तो सबसे अच्छा कमांड यह होगा:
$ cat ????_?????.crt > ????_?????_chain.crt ; echo >> ????_?????_chain.crt ; cat ????_?????.ca-bundle >> ????_?????_chain.crt
3. एक अलग Nginx सर्वर ब्लॉक बनाना या मौजूदा कॉन्फ़िगरेशन फ़ाइल को संशोधित करना
Nginx पर SSL प्रमाणपत्र स्थापित करने के लिए, आपको सर्वर को यह दिखाना होगा कि किन फ़ाइलों का उपयोग करना है, या तो a) एक नई कॉन्फ़िगरेशन फ़ाइल बनाकर, या b) मौजूदा फ़ाइल को संपादित करके।
a) वेबसाइट के लिए एक नई कॉन्फ़िगरेशन फ़ाइल जोड़कर आप सुनिश्चित कर सकते हैं कि अलग कॉन्फ़िगरेशन फ़ाइल में कोई समस्या नहीं है। इसके अलावा, नई कॉन्फ़िगरेशन में किसी भी समस्या के मामले में इंस्टॉलेशन को ट्रबलशूट करना काफी आसान होगा।
हम इस फ़ोल्डर में नई कॉन्फ़िगरेशन फ़ाइल बनाने का सुझाव देते हैं:
/etc/nginx/conf.d
यह कमांड के माध्यम से किया जा सकता है:
sudo nano /etc/nginx/conf.d/Your_?????*-ssl.conf
जहाँ Your_?????*-ssl.conf नई बनाई गई फ़ाइल का नाम है।
इसके बाद, 443 पोर्ट के लिए नीचे दिए गए सर्वर ब्लॉकों में से किसी एक को कॉपी करें और निर्देशिकाओं को संपादित करें। सुनिश्चित करें कि सर्वर नाम और वेब रूट का पथ पोर्ट 80 और पोर्ट 443 दोनों के सर्वर ब्लॉकों में मेल खाते हों। यदि कोई अन्य महत्वपूर्ण मान हैं जिन्हें सहेजना आवश्यक है, तो उन्हें भी नई बनाई गई सर्वर ब्लॉक में स्थानांतरित करें।
b) वेब-सर्वर की डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल को संपादित करें, जिसका नाम nginx.conf है। यह इन फ़ोल्डरों में से किसी एक में होना चाहिए:
/usr/local/nginx/conf
/etc/nginx
/usr/local/etc/nginx
आप इसे खोजने के लिए यह कमांड भी उपयोग कर सकते हैं:
sudo find / -type f -iname "nginx.conf"
जब आप इसे ढूंढ लेंगे, तो फ़ाइल इस आदेश से खोलें:
sudo nano nginx.conf
फिर नीचे दिए गए 443 पोर्ट के सर्वर ब्लॉकों में से किसी एक को कॉपी करें और अपने पोर्ट 80 के सर्वर ब्लॉक के अनुसार निर्देशिकाओं को संपादित करें (सुनिश्चित करें कि सर्वर नाम, वेब रूट का पथ और कोई भी महत्वपूर्ण मान मेल खाते हों)। अन्यथा, आप 80 पोर्ट के सर्वर ब्लॉक को कॉपी करके नीचे पेस्ट करें, पोर्ट अपडेट करें और आवश्यक SSL-सम्बंधित निर्देश जोड़ें।
सर्वर ब्लॉक चुनें:
नीचे आप अपने Nginx संस्करण के लिए एक सर्वर ब्लॉक पा सकते हैं।
नोट: अपने Nginx संस्करण की जांच करने के लिए यह कमांड चलाएं:
sudo nginx -v

नोट: सर्वर ब्लॉक में फ़ाइल नामों के मान, जैसे ????_?????_chain.crt, को अपनी जानकारी के साथ बदलें और उनका रास्ता /path/to/ का उपयोग करते हुए संशोधित करें।
Nginx संस्करण 1.14 और उससे नीचे के लिए सर्वर ब्लॉक:
server {
listen 443;
ssl on;
ssl_certificate /path/to/certificate/????_?????_chain.crt;
ssl_certificate_key /path/to/????_private.key;
root /path/to/webroot;
server_name ????_?????.com;
}
नोट: यदि आवश्यक हो तो आप ऐसी कॉन्फ़िगरेशन में एक से अधिक होस्टनाम निर्दिष्ट कर सकते हैं, उदाहरण के लिए:
server {
listen 443;
ssl on;
ssl_certificate /path/to/certificate/????_?????_chain.crt;
ssl_certificate_key /path/to/????_private.key;
root /path/to/webroot;
server_name ????_?????.com www.????_?????.your;
}
Nginx संस्करण 1.15 और ऊपर के लिए सर्वर ब्लॉक:
server {
listen 443 ssl;
ssl_certificate /path/to/certificate/????_?????_chain.crt;
ssl_certificate_key /path/to/????_private.key;
root /path/to/webroot;
server_name ????_?????.com;
}
ssl_certificate को उस फ़ाइल की ओर निर्देशित किया जाना चाहिए जिसमें आपने पहले संयोजित प्रमाणपत्र बनाए थे।
ssl_certificate_key को उस निजी कुंजी की ओर निर्देशित किया जाना चाहिए जो CSR कोड के साथ उत्पन्न हुई थी।
यहाँ कुछ सुझाव हैं कि Nginx पर निजी कुंजी कैसे खोजें।
महत्वपूर्ण: मल्टी-डोमेन या वाइल्डकार्ड प्रमाणपत्र दोनों के लिए, आपको प्रत्येक डोमेन/सबडोमेन के लिए अलग सर्वर ब्लॉक जोड़ना होगा जो प्रमाणपत्र में शामिल है। सुनिश्चित करें कि निर्दिष्ट डोमेन/सबडोमेन के साथ-साथ समान प्रमाणपत्र फ़ाइलों के पथ सर्वर ब्लॉक में ऊपर बताए अनुसार ही हैं।
एक बार संबंधित सर्वर ब्लॉक फाइल में जोड़ दिए जाने के बाद, सुधारों को सुरक्षित करें। फिर, आप बदलावों को निम्नलिखित चरणों द्वारा दोबारा जांच सकते हैं।
कॉन्फ़िगरेशन फ़ाइल की सिंटैक्स जांच करने के लिए यह कमांड चलाएं:
sudo nginx -t

यदि आपको त्रुटियाँ मिलती हैं, तो जांच लें कि आपने मार्गदर्शिका ठीक से पालन किया है। किसी भी प्रश्न के लिए आप हमारी सहायता टीम से संपर्क कर सकते हैं।
यहाँ एक सुझाव है: त्रुटि लॉग खोजने के लिए, बस यह चलाएं:
sudo nginx -T | grep 'err??_log'
यदि उल्लिखित कोई भी फ़ाइल मौजूद नहीं है, फाइलें टिप्पणी की गई हैं या कोई त्रुटि लॉग फाइल निर्दिष्ट नहीं है, तो डिफ़ॉल्ट सिस्टम लॉग को जांचना चाहिए:
tail /var/log/nginx/err??.log -n 20
यदि सर्वर परीक्षण सफल दिखाता है, तो बदलाव लागू करने के लिए इस आदेश से Nginx को पुनः प्रारंभ करें:
sudo nginx -s reload
अब आपका SSL प्रमाणपत्र स्थापित हो चुका है। आप यहाँ इंस्टॉलेशन की जांच कर सकते हैं।
महत्वपूर्ण नोट्स:
कभी-कभी, कमांड लाइन द्वारा संयोजित SSL फ़ाइल स्थापित करने के बाद, आपको 'Nginx/Apache त्रुटि: 0906D066:PEM routines:PEM_read_bio:bad end line' त्रुटि संदेश मिल सकता है, इस स्थिति में समाधान संदर्भ गाइड में पाया जा सकता है।
इस चरण पर एक अन्य सामान्य समस्या है 'Nginx SSL: err??:0B080074:x509 certificate routines: X509_check_private_key:key values mismatch' त्रुटि संदेश, इसके बारे में और संभावित समाधान इस लेख में पाए जा सकते हैं।
4. HTTPS पुनर्निर्देशन कॉन्फ़िगर करें
हम सुझाव देते हैं कि आप HTTP से HTTPS के लिए पुनर्निर्देशन स्थापित करें। इस प्रकार, आपकी वेबसाइट के आगंतुक केवल आपकी साइट के सुरक्षित संस्करण तक ही पहुंच सकेंगे।
इसके लिए, आपको पोर्ट 80 के सर्वर ब्लॉक वाली कॉन्फ़िगरेशन फ़ाइल में एक पंक्ति जोड़नी होगी।
सुझाव:
आप उन कॉन्फ़िगरेशन फ़ाइलों को देखने के लिए निम्नलिखित कमांड्स में से एक का उपयोग कर सकते हैं जो वर्तमान में सक्षम हैं:
sudo nginx -T | grep -iw "configuration file"
sudo nginx -T | grep -iw "include"
डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल पथ हैं:
RHEL आधारित Linux OS पर: /etc/nginx/conf.d/default.conf
Debian आधारित Linux OS पर: /etc/nginx/sites-enabled/default
आप उन फ़ाइलों को खोलकर यह जांच सकते हैं कि कौन सी आवश्यक सर्वर ब्लॉक को शामिल करती है। इसके लिए, चलाएं:
sudo nano name_of_the_file
जब आप वह फ़ाइल पाते हैं जिसमें पोर्ट 80 (डिफ़ॉल्ट HTTP पोर्ट) के लिए सर्वर ब्लॉक होता है, तो उसमें निम्न पंक्ति जोड़ें:
return 301 https://$server_name$request_uri;
नोट: उपरोक्त पुनर्निर्देशन नियम सर्वर ब्लॉक में अंतिम पंक्ति के रूप में डाला जाना चाहिए।