Kako zaščititi Nginx z Lets Encrypt v Ubuntu in Debian


Po prejšnji vadnici Let’s Encrypt v zvezi z Apache SSL bomo v tem članku razpravljali o tem, kako ustvariti in namestiti brezplačno potrdilo SSL/TLS, ki ga je izdal Let’s Encrypt CA za spletni strežnik Nginx v Ubuntu ali Debian.

  1. Zaščitite Apache z brezplačnim šifriranjem v Ubuntuju in Debianu
  2. Namestite Šifrirajmo SSL za zaščito Apache na RHEL in CentOS

  1. Registrirana domena z veljavnimi zapisi DNS A , ki kažejo na naslov IP vašega strežnika.
  2. Nameščen spletni strežnik Nginx z omogočenima SSL in Vhost, če nameravate gostiti več domen ali poddomen.

1. korak: Namestitev spletnega strežnika Nginx

1. V prvem koraku namestite spletni strežnik Nginx, če že ni nameščen, tako, da izdate spodnji ukaz:

$ sudo apt-get install nginx

2. korak: Ustvarimo šifrirano potrdilo SSL za Nginx

2. Preden ustvarite brezplačno potrdilo SSL/TLS, s pomočjo odjemalca git namestite programsko opremo Let's Encrypt v hierarhijo datotečnega sistema /usr/local/ z izdajo spodnjih ukazov:

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

3. Čeprav je postopek pridobivanja potrdila za Nginx avtomatiziran, lahko še vedno ročno ustvarite in namestite brezplačno potrdilo SSL za Nginx z uporabo vtičnika Let’s Encrypt Standalone.

Ta metoda zahteva, da vrata 80 v vašem sistemu ne smejo biti v uporabi kratek čas, medtem ko odjemalec Let’s Encrypt potrdi identiteto strežnika, preden ustvari potrdilo.

Če že uporabljate Nginx, ustavite storitev tako, da izdate naslednji ukaz.

$ sudo service nginx stop
OR
$ sudo systemctl stop nginx

Če uporabljate drugo storitev, ki se veže na vrata 80, ustavite tudi to storitev.

4. Potrdite, da so vrata 80 brezplačna, tako da zaženete ukaz netstat:

$ sudo netstat -tlpn | grep 80

5. Zdaj je čas, da zaženete letsencrypt , da pridobite potrdilo SSL. Pojdite na namestitveni imenik Let's Encrypt, ki ga najdemo v sistemski poti/usr/local/letsencrypt, in zaženite ukaz letsencrypt-auto, tako da zagotovite certonly --standalone možnost in -d zastavico za za vsako domeno ali poddomeno, za katero želite ustvariti potrdilo.

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

6. Vnesite e-poštni naslov, ki ga bo Let’s Encrypt uporabljal za obnovitev izgubljenih ključev ali nujna obvestila.

7. S pogoji licence se strinjate s pritiskom na tipko Enter.

8. Nazadnje, če je šlo vse uspešno, se na terminalski konzoli prikaže sporočilo, podobno spodnjemu posnetku zaslona.

3. korak: Namestite šifrirajmo SSL potrdilo v Nginx

9. Zdaj, ko je bilo vaše SSL potrdilo ustvarjeno, je čas, da spletni strežnik Nginx konfigurirate za njegovo uporabo. Novo potrdilo SSL se shrani v /etc/letsencrypt/live/ v imenik, imenovan po imenu vaše domene. Zaženite ukaz ls za prikaz datotek potrdil, izdanih za vašo domeno.

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

10. Nato z urejevalnikom besedila odprite datoteko /etc/nginx/sites-available/default in dodajte prvi blok za prvo komentirano vrstico, ki določa začetek bloka SSL. Kot navodilo uporabite spodnji posnetek zaslona.

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

Izvleček bloka 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;

Vrednosti domenskih imen za SSL potrdila ustrezno zamenjajte.

11. V naslednjem koraku ustvarite močno šifro Diffie-Hellman v imeniku/etc/nginx/ssl /, da zaščitite svoj strežnik pred napadom Logjam z zagonom naslednjih ukazov.

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

12. Na koncu ponovno zaženite demon Nginx, da odraža spremembe.

$ sudo systemctl restart nginx

in preizkusite svoje potrdilo SSL, tako da obiščete spodnji URL.

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

4. korak: Samodejno podaljšajmo Šifrirajmo potrdila Nginx

13. Potrdila, ki jih je izdal Let’s Encrypt CA, veljajo 90 dni. Če želite datoteke samodejno obnoviti pred datumom poteka, v imeniku /usr/local/bin/ ustvarite skript ssl-renew.sh bash z naslednjo vsebino.

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

V datoteko ssl-renew.sh dodajte naslednjo vsebino.

#!/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

Zamenjajte spremenljivko --webroot-path , da se ujema s korenom dokumenta Nginx. Preverite, ali je skript izvedljiv, tako da izdate naslednji ukaz.

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

14. Na koncu dodajte še opravilo cron za zagon skripta vsaka dva meseca ob polnoči, da zagotovite, da bo vaše potrdilo posodobljeno približno v 30 dneh, preden poteče.

$ sudo crontab -e

Na dnu datoteke dodajte naslednjo vrstico.

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

To je to! Vaš strežnik Nginx zdaj streže vsebino SSL z brezplačnim potrdilom Let’s Encrypt SSL.