Cum să securizez Nginx cu Let’s Encrypt pe Ubuntu 18.04

Introducere

Let’s Encrypt este o autoritate pentru certificate (Certificate Authority CA) care furnizează o metodă ușoară de obținere și intalare a certificatelor TLS/SSL gratuite, astfel permițând folosirea protocolului criptat HTTPS pe servere web. Acest serviciu simplifică procesul, prin furnizarea unui client software, denumit Certbot, care încearcă să automatizeze cei mai mulți (dacă nu toți) pașii necesari. La momentul actual, întregul procesul de obținere și instalare este automatizat complet pentru serverele web Apache și Nginx.

În acest tutorial veți folosi Certbot-ul pentru a obține un certificat SSL gratuit pentru Nginx, instalat pe Ubuntu 18.04 și, deasemenea, configurarea acestuia pentru reînnoirea automată.

Acest tutorial va folosi fișiere separate tip bloc de configurare în locul fișierului implicit. Recomand creerea unui nou fișier de configurare tip bloc Ngnix pentru fiecare domeniu, deoarece ajută, cu siguranță, la evitarea greșelilor obișnuite și menține fișierele implicite ca și configurație de rezervă, în cazul unor erori.

De ce veți avea nevoie?

Pentru a putea termina cu succes acest tutorial, veți avea nevoie de următoarele:

  • Un server cu Ubuntu 18.04 configurat urmărind acest tutorial setările inițiale pentru un server cu Ubuntu 18.04, inclusiv un utilizator non-root cu privilegii sudo și un firewall, de preferință ufw.
  • Un nume de domeniu complet înregistrat. În acest tutorial vom folosi pe tot parcursul exemplu.ro. Puteți cumpăra un nume de domeniu de la Namecheap, RoTLD, sau puteți obține unul gratuit de la Freenom, sau, dacă nu agreați nici una din opțiunile enumerate, puteți folosi un registrar care vă convine.
  • Ambele intrări DNS trebuie configurate pentru a indica serverul dvs. Voi încerca să fac un tutorial despre cum adăugăm aceste intrări DNS pentru platforma Freenom, asta pentru că domeniile sunt gratuite, deci accesibile oricui, iar principiul se poate aplica oricărei platforme.
    • O intrare tip A cu exemplu.ro care indică adresa publică a serverului dvs.
    • O intrare tip A cu www.exemplu.ro care indică adresa publică a serverului dvs.
  • Nginx instalat urmărind tutorialul cum să instalezi Nginx pe Ubuntu 18.04. Asigurați-vă că aveți un fișier bloc de configurare pentru domeniul dvs. Acest tutorial va folosi /etc/nginx/sites-available/exemplu.ro ca și exemplu.

Pasul 1 — Instalarea Certbot

Primul pas pentru utilizarea Let’s Encrypt, în scopul obținerii certificatului SSL, este instalarea programului (aplicației) Certbot pe serverul dvs.

Certbot este dezvoltat în mod activ, din acest motiv pachetele software pentru Certbot pe care Ubuntu le oferă tind să fie versiuni mai vechi. În orice caz, dezvoltatorii Certbot mențin un repo software cu versiuni actualizate, așa că îl vom folosi pe acesta.

Mai întâi să adăugăm repo-ul:

$ sudo add-apt-repository ppa:certbot/certbot

Va trebui să apăsați ENTER pentru a accepta.

Instalați pachetul software Certbot pentru Nginx cu ajutorulapt:

sudo apt install python-certbot-nginx

Certbot este acum gata de a fi folosit, dar pentru a configura SSL pentru Nginx, avem nevoie să verificăm câteva din configurările acestuia.

Pasul 2 — Confirmarea configurației Nginx

Certbot are nevoie să fie capabil să localizeze fișierul bloc server în configurația Nginx pentru a fi în măsură să configureze SSL. Mai exact, face asta prin căutarea directivei server_name care se potrivește numelui de domeniu pentru care ați cerut un certificat.

Dacă ați urmat pasul referitor la setarea unui fișier bloc server din tutorialul de instalare Nginx, ar trebui să aveți un fișier bloc server pentru domeniul dvs. /etc/nginx/sites-available/exemplu.ro cu directiva server_namedeja configurată corespunzător.

Pentru a verifica, deschideți fișierul bloc server pentru domeniul dvs. folosind nano sau alt editor de text favorit:

$ sudo nano /etc/nginx/sites-available/exemplu.ro

Găsiți linia în care există directiva server_name. Ar trebui să arate ceva de genul:

            /etc/nginx/sites-available/example.com

...
server_name example.com www.example.com;
...

Dacă este așa, ieșiți din editor și mergeți la următorul pas.

Dacă nu, actualizați în așa fel încât să se potrivească cu exemplul sau cu numele dvs de domeniu. Apoi salvați fișierul, ieșiți din editor și verificați sintaxa configurației Nginx:

$ sudo nginx -t

Dacă vedeți afișată vreo eroare, redeschideți fișierul de configurare bloc server și verificați dacă sunt greșeli de tastare sau caractere lipsă. Imediat ce sintaxa fișierului de configurare este corectă, reîncărcați Nginx pentru a intra în funcțiune noua configurație:

$ sudo systemctl reload nginx

Certbot poate acum găsi blocul server de configurare și îl poate actualiza.

Acum, haideți să actualizăm firewall-ul pentru a permite traficul HTTPS.

Pasul 3 — Permiterea protocolului HTTPS prin Firewall

Dacă aveți firewall-ul ufw activat, așa cum am recomandat la începutul tutorialului, veți avea nevoie să ajustați setările pentru a permite traficul HTTPS. Din fericire, Nginx se înregistrază cu câteva profile pentru ufw la instalare.

Puteți vizualiza setările curente tastând:

$ sudo ufw status

Probabil mesajul afișat va arăta ceva de genul textului de mai jos, ceea ce înseamnă că numai traficul HTTP este permis pentru serverul web:

Mesaj afișat:

Output
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Pentru a permite trafic HTTPS adițional, activați profilul Nginx Full și stergeți profilul Nginx HTTP care deja devine redundant:

$ sudo ufw allow 'Nginx Full'
$ sudo ufw delete allow 'Nginx HTTP'

Status-ul firewall-ului ar trebui să arate cam așa:

$ sudo ufw status
Mesaj afișat:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx Full                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx Full (v6)            ALLOW       Anywhere (v6)

Următorul pas, ar fi să rulăm Certbot-ul pentru a crea certificatele necesare.

root

Un entuziast pasionat de tot ceea ce înseamnă Linux și Open Source și un energic promotor. Deschis la orice proiecte bazate pe aceste tehnologii.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Acest sit folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.

Share via
Copy link
Powered by Social Snap