Kako osigurati Nginx pomoću Let's Encrypt na Ubuntu i Debianu


Slijedeći prethodni vodič za Let's Encrypt koji se odnosi na Apache SSL, u ovom članku ćemo razgovarati o tome kako generirati i instalirati besplatni SSL/TLS certifikat izdat od Let's Encrypt CA za Nginx web server na Ubuntu ili Debianu.

Takođe pročitajte
  1. Osigurajte Apache s besplatnim Let’s Encrypt na Ubuntu i Debianu
  2. Instalirajte Let’s Encrypt SSL za siguran Apache na RHEL i CentOS
Testiranje uzorka okruženja

Zahtjevi

  1. Registrovani domen sa važećim DNS A zapisima koji upućuju nazad na IP adresu vašeg servera.
  2. Instalirani Nginx web server sa omogućenim SSL-om i Vhost-om, u slučaju da planirate ugostiti više domena ili poddomena.

Korak 1: Instaliranje Nginx web servera

1. U prvom koraku instalirajte Nginx web server, ako već nije instaliran, izdavanjem naredbe ispod:

sudo apt-get install nginx

Korak 2: Generirajte Let’s Encrypt SSL certifikat za Nginx

2. Prije generiranja besplatnog SSL/TLS certifikata, instalirajte softver Let's Encrypt u /usr/local/ hijerarhiju fajl sistema uz pomoć git klijent izdavanjem naredbi u nastavku:

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

3. Iako je postupak dobivanja certifikata za Nginx automatiziran, još uvijek možete ručno kreirati i instalirati besplatni SSL certifikat za Nginx pomoću dodatka Let’s Encrypt Standalone.

Ova metoda zahtijeva da se port 80 ne smije koristiti na vašem sistemu u kratkom vremenskom periodu dok Let’s Encrypt klijent potvrđuje identitet servera prije generiranja certifikata.

U slučaju da već koristite Nginx, zaustavite uslugu izdavanjem sljedeće naredbe.


sudo service nginx stop
OR
sudo systemctl stop nginx

U slučaju da koristite drugu uslugu koja se veže na port 80, zaustavite i tu uslugu.

4. Potvrdite da je port 80 slobodan pokretanjem naredbe netstat:

sudo netstat -tlpn | grep 80

5. Sada je vrijeme da pokrenete letsencrypt kako biste dobili SSL certifikat. Idite na Šifrirajmo instalacijski direktorij koji se nalazi na /usr/local/letsencrypt sistemskoj putanji i pokrenite naredbu letsencrypt-auto tako što ćete unijeti certonly --samostalna opcija i -d zastavica za svaku domenu ili poddomenu za koju želite da generišete sertifikat.

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

6. Unesite adresu e-pošte koju će Let’s Encrypt koristiti za oporavak izgubljenog ključa ili hitna obavještenja.

7. Slažete se sa uslovima licence pritiskom na tipku Enter.

8. Konačno, ako je sve prošlo uspješno, na vašoj terminalskoj konzoli bi se trebala pojaviti poruka slična slici ispod.

Korak 3: Instalirajte Let’s Encrypt SSL certifikat u Nginx

9. Sada kada je vaš SSL certifikat generiran, vrijeme je da konfigurirate Nginx web server da ga koristi. Novi SSL certifikati su smješteni u /etc/letsencrypt/live/ u direktorij nazvan po imenu vaše domene. Pokrenite naredbu ls da navedete datoteke certifikata izdate za vašu domenu.

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

10. Zatim otvorite datoteku /etc/nginx/sites-available/default u uređivaču teksta i dodajte sljedeći blok nakon prvog komentiranog reda koji navodi početak SSL blok. Koristite donji snimak ekrana kao smjernicu.

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

Nginx blok izvod:

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;

Zamijenite vrijednosti imena domene za SSL certifikate u skladu s tim.

11. U sljedećem koraku generirajte jaku Diffie-Hellman šifru u direktoriju /etc/nginx/ssl/ kako biste zaštitili svoj server od napad Logjam pokretanjem sljedećih naredbi.

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

12. Konačno, ponovo pokrenite Nginx demon da odrazi promjene.

sudo systemctl restart nginx

i testirajte svoj SSL certifikat tako što ćete posjetiti donji URL.

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

Korak 4: Automatsko obnavljanje Let’s Encrypt Nginx certifikata

13. Certifikati koje je izdao Let’s Encrypt CA vrijede 90 dana. Da biste automatski obnovili datoteke prije isteka, kreirajte ssl-renew.sh bash skriptu u /usr/local/bin/ direktoriju sa sljedećim sadržajem.

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

Dodajte sljedeći sadržaj u datoteku 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

Zamijenite varijablu --webroot-path tako da odgovara korijenu vašeg Nginx dokumenta. Uvjerite se da je skripta izvršna izdavanjem sljedeće naredbe.

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

14. Konačno dodajte cron posao za pokretanje skripte svaka dva mjeseca u ponoć kako biste bili sigurni da će vaš certifikat biti ažuriran otprilike 30 dana prije nego što istekne.

sudo crontab -e

Dodajte sljedeći red na dno datoteke.

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

To je to! Vaš Nginx server sada opslužuje SSL sadržaj koristeći besplatni Let’s Encrypt SSL certifikat.