Jinsi ya Kulinda Nginx na Lets Encrypt kwenye Ubuntu na Debian


Kufuatia mafunzo ya awali ya Hebu Tusimbe kuhusu Apache SSL, katika makala hii tutajadili jinsi ya kutengeneza na kusakinisha cheti cha bure cha SSL/TLS kilichotolewa na Let's Encrypt CA for Nginx webserver kwenye Ubuntu au Debian.

  1. Linda Apache ukitumia Tusimbe kwa Njia Fiche kwenye Ubuntu na Debian
  2. Sakinisha Hebu Tusimbe SSL ili Kulinda Apache kwenye RHEL na CentOS

  1. Kikoa kilichosajiliwa chenye kumbukumbu halali za DNS A ili kuelekeza kwenye anwani ya IP ya seva yako.
  2. Seva ya wavuti ya Nginx iliyosakinishwa iliyo na SSL na Vhost iliyowezeshwa, ikiwa unapanga kupangisha vikoa au vikoa vingi.

Hatua ya 1: Kufunga Seva ya Wavuti ya Nginx

1. Katika hatua ya kwanza sakinisha seva ya wavuti ya Nginx, ikiwa haijasakinishwa tayari, kwa kutoa amri iliyo hapa chini:

$ sudo apt-get install nginx

Hatua ya 2: Tengeneza Cheti cha Wacha Tusimbe kwa Njia Fiche kwa Nginx

2. Kabla ya kutoa cheti cha SSL/TLS bila malipo, sakinisha programu ya Let's Encrypt katika /usr/local/ daraja la mfumo kwa usaidizi wa git client kwa kutoa amri zilizo hapa chini:

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

3. Ingawa utaratibu wa kupata Cheti cha Nginx ni wa kiotomatiki, bado unaweza kuunda na kusakinisha cheti cha SSL bila malipo kwa Nginx kwa kutumia programu-jalizi ya Let's Encrypt Standalone.

Njia hii inahitaji kwamba port 80 lazima isitumike kwenye mfumo wako kwa muda mfupi huku mteja wa Let's Encrypt athibitishe utambulisho wa seva kabla ya kutoa cheti.

Ikiwa unaendesha Nginx tayari, simamisha huduma kwa kutoa amri ifuatayo.

$ sudo service nginx stop
OR
$ sudo systemctl stop nginx

Iwapo unatumia huduma nyingine inayofunga kwenye bandari 80 acha huduma hiyo pia.

4. Thibitisha kuwa bandari 80 ni bure kwa kutekeleza amri ya netstat:

$ sudo netstat -tlpn | grep 80

5. Sasa ni wakati wa kuendesha letsencrypt ili kupata Cheti cha SSL. Nenda kwenye saraka ya usakinishaji ya Let's Encrypt inayopatikana katika njia ya mfumo /usr/local/letsencrypt na utekeleze amri ya letsencrypt-auto kwa kutoa chaguo la --standalone na alama ya -d ya uhakika ya. kila kikoa au kikoa kidogo unachotaka kutoa cheti.

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

6. Weka barua pepe ambayo itatumiwa na Let's Encrypt kwa uokoaji wa ufunguo uliopotea au arifa za dharura.

7. Kubali masharti ya leseni kwa kubonyeza kitufe cha Ingiza.

8. Hatimaye, ikiwa kila kitu kilifanikiwa, ujumbe sawa na skrini iliyo hapa chini inapaswa kuonekana kwenye console yako ya mwisho.

Hatua ya 3: Sakinisha Hebu Tusimbe Cheti cha SSL katika Nginx

9. Sasa kwa kuwa Cheti chako cha SSL kimetolewa ni wakati wa kusanidi seva ya wavuti ya Nginx ili kukitumia. Vyeti vipya vya SSL vimewekwa katika /etc/letsencrypt/live/ chini ya saraka iliyopewa jina la kikoa chako. Endesha ls amri ili kuorodhesha faili za Cheti zilizotolewa kwa kikoa chako.

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

10. Kisha, fungua faili ya /etc/nginx/sites-available/default na kihariri cha maandishi na uongeze kizuizi kifuatacho baada ya mstari wa kwanza wa maoni unaobainisha mwanzo wa kizuizi cha SSL. Tumia picha ya skrini iliyo hapa chini kama mwongozo.

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

Nukuu ya block ya 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;

Badilisha thamani za jina la kikoa kwa vyeti vya SSL ipasavyo.

11. Katika hatua inayofuata tengeneza msimbo mkali wa Diffie-Hellman katika /etc/nginx/ssl/ saraka ili kulinda seva yako dhidi ya shambulio la Logjam kwa kutekeleza amri zifuatazo.

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

12. Hatimaye, anzisha upya daemon ya Nginx ili kuonyesha mabadiliko.

$ sudo systemctl restart nginx

na jaribu cheti chako cha SSL kwa kutembelea URL iliyo hapa chini.

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

Hatua ya 4: Sasisha Kiotomatiki Hebu Tufiche Vyeti vya Nginx

13. Vyeti vinavyotolewa na Let’s Encrypt CA ni halali kwa siku 90. Ili kufanya upya faili kiotomatiki kabla ya tarehe ya mwisho wa matumizi unda hati ya ssl-renew.sh bash katika /usr/local/bin/ saraka yenye maudhui yafuatayo.

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

Ongeza maudhui yafuatayo kwenye faili ya 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

Badilisha kigezo cha --webroot-path ili kufanana na mzizi wa hati yako ya Nginx. Hakikisha hati inaweza kutekelezwa kwa kutoa amri ifuatayo.

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

14. Hatimaye ongeza kazi ya cron ili kuendesha hati kila baada ya miezi miwili saa sita usiku ili kuhakikisha kuwa cheti chako kitasasishwa katika takriban siku 30 kabla ya muda wake kuisha.

$ sudo crontab -e

Ongeza mstari ufuatao chini ya faili.

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

Ni hayo tu! Seva yako ya Nginx sasa inatoa maudhui ya SSL kwa kutumia cheti cha bure cha Let's Encrypt SSL.