SSL के साथ Nginx को कैसे सुरक्षित करें और FreeBSD में एनक्रिप्ट करें
इस मार्गदर्शिका में हम चर्चा करेंगे कि Nginx वेब सर्वर को FreeBSD TLS/SSL के साथ द्वारा प्रमाण पत्र प्रदान करने के लिए कैसे प्रमाणपत्र दें प्राधिकरण । हम आपको यह भी बताएंगे कि एक्सपायरिंग डेट से पहले लेट्स के एनक्रिप्ट सर्टिफिकेट को अपने आप नवीनीकृत कैसे करें।
TLS , ट्रांसपोर्ट लेयर सिक्योरिटी के लिए एक संक्षिप्त नाम, एक प्रोटोकॉल है जो HTTP प्रोटोकॉल के तहत चलता है और पैकेट और इनकैप्सुलेट करने के लिए प्रमाणपत्र और कुंजियों का उपयोग करता है किसी सर्वर और क्लाइंट के बीच या इस मामले में Nginx वेब सर्वर और क्लाइंट के ब्राउज़र के बीच आदान-प्रदान डेटा को एन्क्रिप्ट करें, ताकि कनेक्शन सुरक्षित हो सके, ताकि कोई तीसरा पक्ष, जो ट्रैफ़िक को बाधित कर सके, को डिक्रिप्ट नहीं कर सकता है। संचरण।
एक नि: शुल्क लेट्स एनक्रिप्ट/ प्रमाणपत्र को फ्रीबीएसडी प्राप्त करने की प्रक्रिया को सर्टिफिकेट क्लाइंट उपयोगिता स्थापित करके बहुत सरल बनाया जा सकता है, जो आधिकारिक है आइए ग्राहक को एन्क्रिप्ट करें। प्रमाण पत्र बनाने और डाउनलोड करने के लिए।
- Install FBEMP (Nginx, MariaDB and PHP) stack in FreeBSD
चरण 1: Nginx TLS / SSL कॉन्फ़िगर करें
1। डिफ़ॉल्ट रूप से, TLS/SSL सर्वर कॉन्फ़िगरेशन FreeBSD में सक्षम नहीं है, क्योंकि TLS सर्वर ब्लॉक स्टेटमेंट Nginx डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल में टिप्पणी की गई है।
टीएलएस सर्वर को नेगनेक्स में सक्रिय करने के लिए, nginx.conf कॉन्फ़िगरेशन फ़ाइल खोलें, उस लाइन की खोज करें जो की शुरुआत को परिभाषित करता है। एसएसएल सर्वर और नीचे के नमूने की तरह देखने के लिए पूरे ब्लॉक को अपडेट करें।
# nano /usr/local/etc/nginx/nginx.conf
Nginx HTTPS ब्लॉक अंश:
server { listen 443 ssl default_server; server_name www.yourdomain.com; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/local/www/nginx-dist; } location / { root /usr/local/www/nginx; index index.html index.htm; try_files $uri $uri/ /index.php?$args; } ssl_certificate "/usr/local/etc/letsencrypt/live/www.yourdomain.com/cert.pem"; ssl_certificate_key "/usr/local/etc/letsencrypt/live/www.yourdomain.com/privkey.pem"; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_dhparam /usr/local/etc/nginx/dhparam.pem; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; # Use gzip compression gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 5; gzip_buffers 16 8k; gzip_http_version 1.0; # Set a variable to work around the lack of nested conditionals set $cache_uri $request_uri; location ~ /.well-known { allow all; } location ~ \.php$ { root /usr/local/www/nginx; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $request_filename; include fastcgi_params; } }
उपरोक्त ब्लॉक SSL ब्लॉक के अलावा, gzip संपीड़न और FastCGI प्रक्रिया प्रबंधक को सक्षम करने के लिए कुछ कथन भी शामिल हैं, जिसका उपयोग PHP कोड को PHP-FPM <के लिए पास करने के लिए किया जाता है गतिशील वेब एप्लिकेशन चलाने के लिए/मजबूत> गेटवे।
आपके द्वारा उपरोक्त कोड को Nginx मुख्य कॉन्फ़िगरेशन फ़ाइल में जोड़ने के बाद, अपने डोमेन के लिए Let’s Encrypt प्रमाणपत्र स्थापित करने और प्राप्त करने से पहले डेमॉन को पुनरारंभ न करें या सेटिंग लागू न करें।
चरण 2: FreeBSD में सर्टिफिकेट क्लाइंट स्थापित करें
2। फ्रीबीएसडी में एनक्रिप्ट सर्टिफिकेट क्लाइंट उपयोगिता स्थापित करने की प्रक्रिया में py-certbot के लिए स्रोत कोड डाउनलोड करना और स्थानीय रूप से इसे संकलित करना शामिल है नीचे दिए गए आदेश।
# cd /usr/ports/security/py-certbot # make install clean
3। py-certbot उपयोगिता संकलित करने में नियमित बाइनरी पैकेज स्थापित करने की तुलना में बहुत समय लगता है। इस समय के दौरान, निर्भरता की एक श्रृंखला को FreeBSD में स्थानीय रूप से संकलित करने की आवश्यकता होती है।
इसके अलावा, आपके स्क्रीन पर संकेतों की एक श्रृंखला दिखाई देगी, जो आपको यह चुनने की मांग करेगी कि प्रत्येक निर्भरता के लिए संकलन समय पर कौन से पैकेज का उपयोग किया जाएगा। पहली स्क्रीन पर, नीचे दिए गए चित्र में दर्शाए गए अनुसार python27 निर्भरता को संकलित करने के लिए, [space] कुंजी दबाकर, निम्नलिखित टूल का चयन करें।
- IPV6
- LIBFFI
- NLS
- PYMALLOC
- THREADS
- UCS4 for Unicode support
4। अगला, गेटेक्स-टूल्स निर्भरता के लिए DOCS और THREADS का चयन करें और ठीक दबाएं > नीचे दी गई छवि में दिखाए अनुसार जारी रखने के लिए।
5। अगली स्क्रीन पर TESTS विकल्प छोड़ें libffi-3.2.1 के लिए अक्षम करें और स्थानांतरित करने के लिए ठीक दबाएं आगे की।
६। उपकरण, और प्रेस ठीक जारी रखने के लिए, जैसा कि नीचे स्क्रीनशॉट में दिखाया गया है।
7। अंत में, py27-coverssl निर्भरता के लिए उदाहरण नमूने स्थापित करने का चयन करें [स्पेस] कुंजी दबाकर और ठीक दबाएं > py-certbot क्लाइंट के लिए संकलन और स्थापना प्रक्रिया को पूरा करने के लिए।
8। संकलन और स्थापित करने की प्रक्रिया के बाद py-certbot उपयोगिता खत्म, पैकेज के नवीनतम संस्करण में टूल को अपग्रेड करने के लिए नीचे दिए गए आदेश को सचित्र रूप में चलाएं। स्क्रीनशॉट के नीचे।
# pkg install py27-certbot
9। कुछ मुद्दों से बचने के लिए यह मुफ़्त प्राप्त करने के दौरान हो सकता है आइए एन्क्रिप्ट करें प्रमाण पत्र, सबसे आम त्रुटि " pkg_resources.DistributionNotFound"/strong> " , सुनिश्चित करें कि निम्नलिखित दो निर्भरताएँ भी आप में मौजूद हैं: py27- नमक और py27-acme ।
# pkg install py27-salt # pkg install py27-acme
चरण 3: FreeBSD पर Nginx के लिए Let’s Encrypt प्रमाणपत्र स्थापित करें
10। अपने डोमेन के लिए लेट एनक्रिप्ट स्टैंडअलोन प्रमाणपत्र प्राप्त करने के लिए, निम्न कमांड चलाएँ और आपको डोमेन नाम और वे सभी उप डोमेन प्रदान करें, जिन्हें आप <कोड> -d i> लगाकर प्रमाणपत्र प्राप्त करना चाहते हैं। कोड> ध्वज।
# certbot certonly --standalone -d yourdomain.com -d www.yourdomain.com
11। प्रमाण पत्र बनाते समय आपसे आपको ईमेल पता दर्ज करने और लेट एनक्रिप्ट की सेवा शर्तों से सहमत होने के लिए कहा जाएगा। टाइप करने के लिए कीबोर्ड से सहमत होने और जारी रखने के लिए
टाइप करें और आपसे यह भी पूछा जाएगा कि क्या आप अपने ईमेल पते को Let’s Encrypt भागीदारों के साथ साझा करना चाहते हैं।
यदि आप अपना ईमेल पता साझा नहीं करना चाहते हैं, तो शीघ्र में no
शब्द टाइप करें और जारी रखने के लिए [दर्ज करें] कुंजी दबाएँ। आपके डोमेन के प्रमाण पत्र सफलतापूर्वक प्राप्त हो जाने के बाद, आपको कुछ महत्वपूर्ण नोट प्राप्त होंगे जो आपको सूचित करेंगे कि आपके सिस्टम में प्रमाणपत्र कहाँ संग्रहीत हैं और जब वे समाप्त होंगे।
12। यदि आप अपने डोमेन के लिए Nginx सर्वर की webroot निर्देशिका को जोड़कर " webroot " प्लगइन का उपयोग करते हुए एक एनकाउंटर प्रमाण पत्र प्राप्त करना चाहते हैं। , - webroot
और -w
झंडे के साथ निम्नलिखित कमांड जारी करें। डिफ़ॉल्ट रूप से, यदि आपने Nginx webroot पथ को परिवर्तित नहीं किया है, तो यह /usr/स्थानीय/www/nginx/ सिस्टम पथ में स्थित होना चाहिए।
# certbot certonly --webroot -w /usr/local/www/nginx/ -d yourdomain.com -d www.yourdomain.com
जैसे कि - strandalone
प्रमाणपत्र प्राप्त करने की प्रक्रिया, - webroot
प्रक्रिया आपको प्रमाणपत्र नवीनीकरण और सुरक्षा सूचनाओं के लिए एक ईमेल पते की आपूर्ति करने के लिए कहेगी, < कोड> ए कोड> से सहमत होने के लिए सहमत हैं कि नियमों और शर्तों को एन्क्रिप्ट करें और <कोड> नहीं कोड> या <कोड> हां कोड> ईमेल पते को साझा करने या न करने के लिए आइए नीचे के नमूने में सचित्र भागीदारों को एन्क्रिप्ट करें।
ज्ञात हो कि सर्टिफिकेट क्लाइंट एक नकली ईमेल पते का पता लगा सकता है और आपको एक वास्तविक ईमेल पते की आपूर्ति करने तक प्रमाणपत्र बनाने के साथ जारी नहीं होने देगा।
Saving debug log to /var/log/letsencrypt/letsencrypt.log Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel):[email #A fake email address will be detected There seem to be problems with that address. Enter email address (used for urgent renewal and security notices) If you really want to skip this, you can run the client with --register-unsafely-without-email but make sure you then backup your account key from /etc/letsencrypt/accounts (Enter 'c' to cancel):[email ------------------------------------------------------------------------------- Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree in order to register with the ACME server at https://acme-v01.api.letsencrypt.org/directory ------------------------------------------------------------------------------- (A)gree/(C)ancel:a
------------------------------------------------------------------------------- Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about EFF and our work to encrypt the web, protect its users and defend digital rights. ------------------------------------------------------------------------------- (Y)es/(N)o:n
Obtaining a new certificate Performing the following challenges: http-01 challenge for www.domain.com Using the webroot path /usr/local/www/nginx/ for all unmatched domains. Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /usr/local/etc/letsencrypt/live/www.yourdomain.com/fullchain.pem. Your cert will expire on 2017-12-28. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /usr/local/etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
चरण 4: Nginx TLS प्रमाणपत्र अपडेट करें
13। FreeBSD में प्राप्त Let’s Encrypt प्रमाणपत्र और कुंजियों का स्थान /us/local/etc/letsencrypt/live/www.yourdomain.com/ मार्ग है। अपने लेटर के एनक्रिप्ट प्रमाण पत्र के घटकों को प्रदर्शित करने के लिए ls कमांड जारी करें: श्रृंखला फ़ाइल, फुलचैन फ़ाइल, निजी कुंजी और प्रमाणपत्र फ़ाइल, जैसा कि निम्नलिखित उदाहरण में दिखाया गया है।
# ls /usr/local/etc/letsencrypt/live/www.yourdomain.com/
14। Nginx वेब सर्वर में अपने डोमेन के लिए प्रमाण पत्र एन्क्रिप्ट करने के लिए, Nginx मुख्य कॉन्फ़िगरेशन फ़ाइल या Nginx TLS सर्वर के लिए कॉन्फ़िगरेशन फ़ाइल खोलें, यदि यह एक अलग फ़ाइल है, और नीचे की पंक्तियों को संशोधित करें। नीचे बताए अनुसार जारी किए गए प्रमाणपत्रों को एन्क्रिप्ट करें के पथ को प्रतिबिंबित करने के लिए।
# nano /usr/local/etc/nginx/nginx.conf
इस नमूने में देखने के लिए निम्न पंक्तियों को अपडेट करें:
ssl_certificate "/usr/local/etc/letsencrypt/live/www.yourdomain.com/cert.pem"; ssl_certificate_key "/usr/local/etc/letsencrypt/live/www.yourdomain.com/privkey.pem";
15। इसके अलावा, यदि लाइन ssl_dhparam Nginx SSL कॉन्फ़िगरेशन में मौजूद है, तो आपको एक नया 2048 बिट उत्पन्न करना चाहिए निम्नलिखित कमांड के साथ डिफी-हेलमैन कुंजी:
# openssl dhparam –out /usr/local/etc/nginx/dhparam.pem 2048
16। अंत में, Nginx TLS कॉन्फ़िगरेशन को सक्रिय करने के लिए, संभव सिंटैक्स त्रुटियों के लिए पहले Nginx वैश्विक कॉन्फ़िगरेशन की जाँच करें और फिर, निम्न आदेश जारी करके SSL कॉन्फ़िगरेशन को लागू करने के लिए Nginx सेवा को पुनरारंभ करें।
# nginx -t # service nginx restart
17। अगर नग्नेक्स डेमोन 443 पोर्ट को बाध्य कर रहा है, तो निम्न आदेश जारी करके, जो सिस्टम में सभी खुले नेटवर्क सॉकेट्स को सुनने की स्थिति में सूचीबद्ध कर सकता है।
# netstat -an -p tcp| grep LISTEN # sockstat -4
18। आप ब्राउज़र खोलकर भी अपने डोमेन पते को HTTPS प्रोटोकॉल के माध्यम से देख सकते हैं और निम्न पते को टाइप कर सकते हैं ताकि यह पुष्टि की जा सके कि Let’s Encrypt प्रमाण पत्र अपेक्षित रूप से काम कर रहे हैं। क्योंकि आप एक मान्य प्रमाणपत्र प्राधिकरण द्वारा निर्मित प्रमाणपत्रों का उपयोग कर रहे हैं, ब्राउज़र में कोई त्रुटि प्रदर्शित नहीं की जानी चाहिए।
https://www.yourdomain.com
19। Openssl उपयोगिता आपको निम्न विकल्पों के साथ कमांड चलाकर, Let’s Encrypt CA से प्राप्त प्रमाण पत्र के बारे में जानकारी प्राप्त करने में मदद कर सकती है।
# openssl s_client -connect www.yourdomain.com:443
यदि आप Nginx को अपने डोमेन के लिए प्राप्त सभी http से https अनुरोधों को पोर्ट 80 से HTTPS के लिए निर्देशित करने के लिए मजबूर करना चाहते हैं, तो Nginx कॉन्फ़िगरेशन फ़ाइल खोलें, पोर्ट 80 के लिए सर्वर निर्देश का पता लगाएं और नीचे उदाहरण में सचित्र के रूप में server_name बयान के बाद नीचे की पंक्ति जोड़ें।
rewrite ^(.*) https://www.yourdomain.com$1 permanent;
20। लेटर के एनक्रिप्ट अथॉरिटी द्वारा जारी किए गए प्रमाणपत्र के लिए ऑटो नवीनीकरण सेट करने से पहले, वे निम्नलिखित कमांड जारी करके दिन में एक बार चलने के लिए क्रोन जॉब को शेड्यूल कर सकते हैं।
# crontab -e
प्रमाणपत्र को नवीनीकृत करने के लिए क्रोन कार्य।
0 0 * * * certbot renew >> /var/log/letsencrypt.log
बस इतना ही! Nginx अब अपने आगंतुकों को लेट एनक्रिप्ट फ्री सर्टिफिकेट का उपयोग करके सुरक्षित वेब एप्लिकेशन दे सकते हैं।