Kako osigurati Nginx pomoću Lets Encrypt na Ubuntu i Debian


Slijedom prethodnog vodiča Let’s Encrypt u vezi s Apache SSL-om, u ovom ćemo članku raspravljati o tome kako generirati i instalirati besplatni SSL/TLS certifikat koji je izdao Let’s Encrypt CA za web poslužitelj Nginx na Ubuntu ili Debian.

  1. Osigurajte Apache besplatnim šifriranjem Let's Ubuntu i Debian
  2. Instalirajte Let’s Encrypt SSL da bismo osigurali Apache na RHEL i CentOS

  1. Registrirana domena s važećim DNS A zapisima koji vode natrag na IP adresu vašeg poslužitelja.
  2. Instalirani Nginx web poslužitelj s omogućenim SSL-om i Vhostom, u slučaju da planirate ugostiti više domena ili poddomena.

Korak 1: Instalacija Nginx web poslužitelja

1. Na prvom koraku instalirajte Nginx web poslužitelj, ako već nije instaliran, izdavanjem naredbe u nastavku:

$ sudo apt-get install nginx

Korak 2: Stvorite šifrirajmo SSL certifikat za Nginx

2. Prije generiranja besplatnog SSL/TLS certifikata, instalirajte program Let's Encrypt u hijerarhiju datotečnog sustava /usr/local/ uz pomoć git klijenta izdavanjem sljedećih naredbi:

$ 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 stvoriti i instalirati besplatni SSL certifikat za Nginx koristeći Let’s Encrypt Standalone dodatak.

Ova metoda zahtijeva da se priključak 80 ne smije koristiti u vašem sustavu kratko vrijeme dok klijent Let’s Encrypt provjerava identitet poslužitelja 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 priključak 80, zaustavite i tu uslugu.

4. Potvrdite da je priključak 80 slobodan pokretanjem naredbe netstat:

$ sudo netstat -tlpn | grep 80

5. Sada je vrijeme da pokrenete letsencrypt kako biste dobili SSL certifikat. Idite na Let's Encrypt instalacijski direktorij pronađen u/usr/local/letsencrypt sistemskoj stazi i pokrenite letsencrypt-auto naredbu pružajući certonly --standalone opciju i -d zastavicu za svaku domenu ili poddomenu za koju želite generirati certifikat.

$ 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 hitne obavijesti.

7. Pristanite na uvjete licence pritiskom tipke Enter.

8. Napokon, ako sve bude uspješno, na terminalnoj konzoli trebala bi se pojaviti poruka slična sličici snimke zaslona u nastavku.

Korak 3: Instalirajte šifrirajmo SSL certifikat u Nginxu

9. Sada kada je generiran vaš SSL certifikat, vrijeme je da konfigurirate Nginx web poslužitelj da ga koristi. Novi SSL certifikati smještaju se u /etc/letsencrypt/live/ u direktorij nazvan po imenu vaše domene. Pokrenite ls naredbu za popis datoteka certifikata izdanih 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 uređivačem teksta i dodajte sljedeći blok nakon prvog komentiranog retka koji navodi početak SSL bloka. Kao smjernice upotrijebite snimku zaslona u nastavku.

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

Izvod iz 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;

U skladu s tim zamijenite vrijednosti naziva domene za SSL certifikate.

11. Na sljedećem koraku generirajte jaku Diffie-Hellman šifru u direktoriju/etc/nginx/ssl/kako biste zaštitili svoj poslužitelj od napada Logjam izvođenjem sljedećih naredbi.

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

12. Konačno, ponovno pokrenite Nginx daemon da odražava promjene.

$ sudo systemctl restart nginx

i testirajte svoj SSL certifikat tako da posjetite URL u nastavku.

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

Korak 4: Automatska obnova Šifrirajmo Nginx certifikate

13. Potvrde izdane od strane Let’s Encrypt CA vrijede 90 dana. Da biste automatski obnovili datoteke prije datuma isteka, stvorite ssl-renew.sh bash skriptu u direktoriju /usr/local/bin/ 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 vašem korijenu Nginx dokumenta. Provjerite je li skripta izvršna izdavanjem sljedeće naredbe.

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

14. Napokon dodajte cron posao za pokretanje skripte svaka dva mjeseca u ponoć kako biste osigurali da će se vaš certifikat ažurirati otprilike 30 dana prije nego što istekne.

$ sudo crontab -e

Dodajte sljedeći redak na dnu 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 poslužitelj sada poslužuje SSL sadržaj koristeći besplatni SSL certifikat Let’s Encrypt.