ഉബുണ്ടുവിലും ഡെബിയനിലും എൻക്രിപ്റ്റ് ചെയ്യാൻ അനുവദിക്കുന്നതിലൂടെ Nginx എങ്ങനെ സുരക്ഷിതമാക്കാം


അപ്പാച്ചെ എസ്uഎസ്uഎല്ലിനെ കുറിച്ചുള്ള മുൻ ട്യൂട്ടോറിയലിനെ തുടർന്ന്, ഈ ലേഖനത്തിൽ ഉബുണ്ടുവിലോ ഡെബിയനിലോ എൻuജിൻuഎക്uസ് വെബ്uസെർവറിനായി ലെറ്റ്uസ് എൻuക്രിപ്റ്റ് സിuഎ നൽകിയ ഒരു സൗജന്യ എസ്uഎസ്uഎൽ/ടിഎൽഎസ് സർട്ടിഫിക്കറ്റ് എങ്ങനെ ജനറേറ്റ് ചെയ്യാമെന്നും ഇൻസ്റ്റാൾ ചെയ്യാമെന്നും ഞങ്ങൾ ചർച്ച ചെയ്യും.

  1. ഉബുണ്ടുവിലും ഡെബിയനിലും സൗജന്യ ലെറ്റ് എൻക്രിപ്റ്റ് ഉപയോഗിച്ച് അപ്പാച്ചെ സുരക്ഷിതമാക്കുക
  2. RHEL, CentOS എന്നിവയിൽ അപ്പാച്ചെ സുരക്ഷിതമാക്കാൻ നമുക്ക് SSL എൻക്രിപ്റ്റ് ചെയ്യാം

  1. നിങ്ങളുടെ സെർവറിന്റെ IP വിലാസത്തിലേക്ക് മടങ്ങുന്നതിന് സാധുവായ DNS A റെക്കോർഡുകളുള്ള ഒരു രജിസ്റ്റർ ചെയ്ത ഡൊമെയ്uൻ.
  2. നിങ്ങൾ ഒന്നിലധികം ഡൊമെയ്uനുകളോ ഉപഡൊമെയ്uനുകളോ ഹോസ്റ്റുചെയ്യാൻ പദ്ധതിയിടുന്ന സാഹചര്യത്തിൽ, പ്രവർത്തനക്ഷമമാക്കിയ SSL, Vhost എന്നിവയുള്ള ഒരു ഇൻസ്റ്റോൾ ചെയ്ത Nginx വെബ് സെർവർ.

ഘട്ടം 1: Nginx വെബ് സെർവർ ഇൻസ്റ്റാൾ ചെയ്യുന്നു

1. ആദ്യ ഘട്ടത്തിൽ Nginx വെബ് സെർവർ ഇൻസ്റ്റാൾ ചെയ്യുക, ഇതിനകം ഇൻസ്റ്റാൾ ചെയ്തിട്ടില്ലെങ്കിൽ, ചുവടെയുള്ള കമാൻഡ് നൽകി:

$ sudo apt-get install nginx

ഘട്ടം 2: Nginx-നായി നമുക്ക് SSL സർട്ടിഫിക്കറ്റ് എൻക്രിപ്റ്റ് ചെയ്യാം

2. ഒരു സൗജന്യ SSL/TLS സർട്ടിഫിക്കറ്റ് സൃഷ്uടിക്കുന്നതിന് മുമ്പ്, താഴെ പറയുന്ന കമാൻഡുകൾ നൽകി git ക്ലയന്റ് സഹായത്തോടെ /usr/local/ ഫയൽസിസ്റ്റം ശ്രേണിയിൽ നമുക്ക് സോഫ്റ്റ്uവെയർ എൻക്രിപ്റ്റ് ചെയ്യാം:

$ sudo apt-get -y install git
$ cd /usr/local/
$ sudo git clone https://github.com/letsencrypt/letsencrypt

3. Nginx-നുള്ള ഒരു സർട്ടിഫിക്കറ്റ് നേടുന്നതിനുള്ള നടപടിക്രമം സ്വയമേവയുള്ളതാണെങ്കിലും, നിങ്ങൾക്ക് ഇപ്പോഴും Nginx-നായി ഒരു സ്വതന്ത്ര SSL സർട്ടിഫിക്കറ്റ് സ്വമേധയാ സൃഷ്ടിക്കുകയും ഇൻസ്റ്റാൾ ചെയ്യുകയും ചെയ്യാം.

സർuട്ടിഫിക്കറ്റ് സൃഷ്uടിക്കുന്നതിന് മുമ്പ് സെർവറിന്റെ ഐഡന്റിറ്റി സാധൂകരിക്കാൻ ലെറ്റ്uസ് എൻക്രിപ്റ്റ് ക്ലയന്റ് ചെയ്യുമ്പോൾ പോർട്ട് 80 നിങ്ങളുടെ സിസ്റ്റത്തിൽ ചുരുങ്ങിയ സമയത്തേക്ക് ഉപയോഗത്തിലായിരിക്കരുത് എന്ന് ഈ രീതി ആവശ്യപ്പെടുന്നു.

നിങ്ങൾ ഇതിനകം Nginx പ്രവർത്തിപ്പിക്കുകയാണെങ്കിൽ, ഇനിപ്പറയുന്ന കമാൻഡ് നൽകി സേവനം നിർത്തുക.

$ sudo service nginx stop
OR
$ sudo systemctl stop nginx

പോർട്ട് 80-ൽ ബന്ധിപ്പിക്കുന്ന മറ്റ് സേവനം നിങ്ങൾ പ്രവർത്തിപ്പിക്കുകയാണെങ്കിൽ ആ സേവനവും നിർത്തുക.

4. netstat കമാൻഡ് പ്രവർത്തിപ്പിച്ച് പോർട്ട് 80 സൗജന്യമാണെന്ന് സ്ഥിരീകരിക്കുക:

$ sudo netstat -tlpn | grep 80

5. ഇപ്പോൾ ഒരു SSL സർട്ടിഫിക്കറ്റ് ലഭിക്കുന്നതിന് letsencrypt പ്രവർത്തിപ്പിക്കേണ്ട സമയമാണിത്. /usr/local/letsencrypt സിസ്റ്റം പാത്തിൽ കാണുന്ന ലെറ്റ്സ് എൻക്രിപ്റ്റ് ഇൻസ്uറ്റലേഷൻ ഡയറക്uടറിയിലേക്ക് പോയി, ഉറപ്പായും --standalone ഓപ്ഷനും -d ഫ്ലാഗും നൽകി letsencrypt-auto കമാൻഡ് പ്രവർത്തിപ്പിക്കുക. നിങ്ങൾ ഒരു സർട്ടിഫിക്കറ്റ് സൃഷ്ടിക്കാൻ ആഗ്രഹിക്കുന്ന ഓരോ ഡൊമെയ്uനും സബ്uഡൊമെയ്uനും.

$ cd /usr/local/letsencrypt
$ sudo ./letsencrypt-auto certonly --standalone -d your_domain.tld 

6. നഷ്uടമായ കീ വീണ്ടെടുക്കലിനോ അടിയന്തിര അറിയിപ്പുകൾക്കോ വേണ്ടി നമുക്ക് എൻക്രിപ്റ്റ് ചെയ്യുന്ന ഇമെയിൽ വിലാസം നൽകുക.

7. എന്റർ കീ അമർത്തി ലൈസൻസിന്റെ നിബന്ധനകൾ അംഗീകരിക്കുക.

8. അവസാനമായി, എല്ലാം വിജയകരമാണെങ്കിൽ, ചുവടെയുള്ള സ്ക്രീൻഷോട്ടിന് സമാനമായ ഒരു സന്ദേശം നിങ്ങളുടെ ടെർമിനൽ കൺസോളിൽ ദൃശ്യമാകും.

ഘട്ടം 3: Nginx-ൽ SSL സർട്ടിഫിക്കറ്റ് എൻക്രിപ്റ്റ് ചെയ്യാം

9. ഇപ്പോൾ നിങ്ങളുടെ SSL സർട്ടിഫിക്കറ്റ് ജനറേറ്റുചെയ്uതു, അത് ഉപയോഗിക്കുന്നതിന് Nginx വെബ്uസെർവർ കോൺഫിഗർ ചെയ്യാനുള്ള സമയമാണിത്. പുതുതായി SSL സർട്ടിഫിക്കറ്റുകൾ /etc/letsencrypt/live/ എന്നതിൽ നിങ്ങളുടെ ഡൊമെയ്ൻ നാമത്തിന്റെ പേരിലുള്ള ഒരു ഡയറക്uടറിക്ക് കീഴിൽ സ്ഥാപിച്ചിരിക്കുന്നു. നിങ്ങളുടെ ഡൊമെയ്uനിനായി നൽകിയ സർട്ടിഫിക്കറ്റ് ഫയലുകൾ ലിസ്റ്റ് ചെയ്യാൻ ls കമാൻഡ് പ്രവർത്തിപ്പിക്കുക.

$ sudo ls /etc/letsencrypt/live/
$ sudo ls -al /etc/letsencrypt/live/caeszar.tk

10. അടുത്തതായി, ഒരു ടെക്സ്റ്റ് എഡിറ്റർ ഉപയോഗിച്ച് /etc/nginx/sites-available/default ഫയൽ തുറന്ന് SSL ബ്ലോക്കിന്റെ ആരംഭം വ്യക്തമാക്കുന്ന ആദ്യത്തെ കമന്റ് ചെയ്ത വരിക്ക് ശേഷം ഇനിപ്പറയുന്ന ബ്ലോക്ക് ചേർക്കുക. മാർഗ്ഗനിർദ്ദേശമായി താഴെയുള്ള സ്ക്രീൻഷോട്ട് ഉപയോഗിക്കുക.

$ sudo nano /etc/nginx/sites-enabled/default

Nginx ബ്ലോക്ക് ഉദ്ധരണി:

# SSL configuration
        #
        listen 443 ssl default_server;
        ssl_certificate /etc/letsencrypt/live/caeszar.tk/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/caeszar.tk/privkey.pem;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
        ssl_dhparam /etc/nginx/ssl/dhparams.pem;

SSL സർട്ടിഫിക്കറ്റുകൾക്കുള്ള ഡൊമെയ്ൻ നാമ മൂല്യങ്ങൾ അതിനനുസരിച്ച് മാറ്റിസ്ഥാപിക്കുക.

11. അടുത്ത ഘട്ടത്തിൽ ഇനിപ്പറയുന്ന കമാൻഡുകൾ പ്രവർത്തിപ്പിച്ച് ലോഗ്ജാം ആക്രമണത്തിൽ നിന്ന് നിങ്ങളുടെ സെർവറിനെ പരിരക്ഷിക്കുന്നതിന് /etc/nginx/ssl/ ഡയറക്ടറിയിൽ ശക്തമായ ഡിഫി-ഹെൽമാൻ സൈഫർ സൃഷ്ടിക്കുക.

$ sudo mkdir /etc/nginx/ssl
$ cd /etc/nginx/ssl
$ sudo openssl dhparam -out dhparams.pem 2048

12. അവസാനമായി, മാറ്റങ്ങൾ പ്രതിഫലിപ്പിക്കുന്നതിന് Nginx ഡെമൺ പുനരാരംഭിക്കുക.

$ sudo systemctl restart nginx

താഴെയുള്ള URL സന്ദർശിച്ച് നിങ്ങളുടെ SSL സർട്ടിഫിക്കറ്റ് പരിശോധിക്കുക.

https://www.ssllabs.com/ssltest/analyze.html

ഘട്ടം 4: സ്വയമേവ പുതുക്കുക നമുക്ക് Nginx സർട്ടിഫിക്കറ്റുകൾ എൻക്രിപ്റ്റ് ചെയ്യാം

13. ലെറ്റ്സ് എൻക്രിപ്റ്റ് CA നൽകുന്ന സർട്ടിഫിക്കറ്റുകൾ 90 ദിവസത്തേക്ക് സാധുതയുള്ളതാണ്. കാലഹരണപ്പെടുന്നതിന് മുമ്പ് ഫയലുകൾ സ്വയമേവ പുതുക്കുന്നതിന്, ഇനിപ്പറയുന്ന ഉള്ളടക്കമുള്ള /usr/local/bin/ ഡയറക്uടറിയിൽ ssl-renew.sh ബാഷ് സ്uക്രിപ്റ്റ് സൃഷ്uടിക്കുക.

$ sudo nano /usr/local/bin/ssl-renew.sh

ssl-renew.sh ഫയലിലേക്ക് ഇനിപ്പറയുന്ന ഉള്ളടക്കം ചേർക്കുക.

#!/bin/bash

cd /usr/local/letsencrypt
sudo ./letsencrypt-auto certonly -a webroot --agree-tos --renew-by-default --webroot-path=/var/www/html/ -d your_domain.tld
sudo systemctl reload nginx
exit 0

നിങ്ങളുടെ Nginx ഡോക്യുമെന്റ് റൂട്ടുമായി പൊരുത്തപ്പെടുന്നതിന് --webroot-path വേരിയബിൾ മാറ്റിസ്ഥാപിക്കുക. ഇനിപ്പറയുന്ന കമാൻഡ് നൽകി സ്ക്രിപ്റ്റ് എക്സിക്യൂട്ടബിൾ ആണെന്ന് ഉറപ്പാക്കുക.

$ sudo chmod +x /usr/local/bin/ssl-renew.sh

14. അവസാനമായി നിങ്ങളുടെ സർട്ടിഫിക്കറ്റ് കാലഹരണപ്പെടുന്നതിന് ഏകദേശം 30 ദിവസങ്ങൾക്കുള്ളിൽ അപ്uഡേറ്റ് ചെയ്യപ്പെടുമെന്ന് ഉറപ്പുനൽകുന്നതിനായി ഓരോ രണ്ട് മാസത്തിലും അർദ്ധരാത്രിയിൽ സ്uക്രിപ്റ്റ് പ്രവർത്തിപ്പിക്കാൻ ഒരു ക്രോൺ ജോബ് ചേർക്കുക.

$ sudo crontab -e

ഫയലിന്റെ ചുവടെ ഇനിപ്പറയുന്ന വരി ചേർക്കുക.

0 1 1 */2 * /usr/local/bin/ssl-renew.sh >> /var/log/your_domain.tld-renew.log 2>&1

അത്രയേയുള്ളൂ! നിങ്ങളുടെ Nginx സെർവർ ഇപ്പോൾ ഒരു സൗജന്യ SSL സർട്ടിഫിക്കറ്റ് ഉപയോഗിച്ച് SSL ഉള്ളടക്കം നൽകുന്നു.