Economisiți 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul: Skills Începeți
Secțiuni
Linux Securitate

Cum să securizezi Nginx cu Let’s Encrypt SSL pe Ubuntu (Ghid Complet 2025)

HTTPS nu mai este opțional. În 2025, fiecare site web are nevoie de criptare SSL/TLS — nu doar pentru a proteja datele utilizatorilor, ci și pentru a se clasifica competitiv în Google Search și pentru a satisface cerințele moderne de securitate ale browserelor. Let’s Encrypt face acest lucru realizabil gratuit, oferind certificate SSL de încredere, cu reînnoire automată, care funcționează perfect cu Nginx pe Ubuntu.

Acest ghid cuprinzător vă ghidează prin fiecare pas: instalarea Certbot, obținerea unui certificat SSL Let’s Encrypt, verificarea configurației și automatizarea reînnoirilor — toate pe un server Ubuntu 18.04, 20.04 sau 22.04 care rulează Nginx.

Indiferent dacă gestionați un mediu VPS Hosting sau un server web dedicat, acest tutorial vă oferă o configurație HTTPS gata pentru producție în mai puțin de 15 minute.

De ce SSL este important pentru Nginx în 2025

Înainte de a intra în comenzi, merită să înțelegeți exact ce câștigați prin securizarea Nginx cu Let's Encrypt:

  • Criptarea datelor: HTTPS criptează tot traficul dintre serverul dvs. și vizitatori, prevenind atacurile man-in-the-middle și ascultarea neautorizată.
  • Semnale de clasare SEO: Google a confirmat HTTPS ca factor de clasare. Site-urile fără SSL sunt penalizate activ în rezultatele căutării.
  • Indicatori de încredere în browser: Chrome, Firefox și Edge afișează avertismente "Nu este securizat" pentru site-uri HTTP, distrugând încrederea utilizatorilor și crescând ratele de ieșire.
  • Gratuit și automatizat: Let's Encrypt emite certificate fără cost, iar Certbot gestionează reînoirile automat — eliminând cheltuielile manuale ale certificatelor plătite.
  • PCI DSS și conformitate: Orice site care gestionează plăți sau date personale este obligat legal să utilizeze conexiuni criptate.

Dacă domeniul dvs. este deja înregistrat și indică către serverul dvs., sunteți gata să începeți. Dacă mai aveți nevoie de un domeniu, AlexHost oferă Înregistrare de domenii la prețuri accesibile cu gestionare DNS instantanee.

Cerințe preliminare

Asigurați-vă că următoarele condiții sunt îndeplinite înainte de a continua:

CerințăDetalii
Sistem de operareUbuntu 18.04, 20.04, sau 22.04 LTS
Server WebNginx instalat și servind activ site-ul dvs.
Nume de domeniuUn domeniu înregistrat cu un înregistrare A care indică IP-ul public al serverului dvs.
Acces la serverAcces SSH cu un utilizator care are sudo privilegii
FirewallPorturile 80 (HTTP) și 443 (HTTPS) deschise în UFW sau iptables
Acces rootNu este strict necesar, dar accesul sudo este obligatoriu

Verificați dacă Nginx rulează

Înainte de a instala Certbot, confirmați că Nginx este activ:

sudo systemctl status nginx

Ar trebui să vedeți active (running) în rezultat. Dacă Nginx nu este instalat, rulați:

sudo apt update && sudo apt install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx

Deschideți porturile firewall necesare

Dacă UFW este activat, permiteți traficul HTTP și HTTPS:

sudo ufw allow 'Nginx Full'
sudo ufw reload
sudo ufw status

Rezultatul ar trebui să arate Nginx Full ca ALLOW pentru IPv4 și IPv6.

Pasul 1 — Instalarea Certbot și a pluginului Nginx

Certbot este clientul oficial Let’s Encrypt. Automatizează întregul ciclu de viață al certificatelor: emitere, instalare și reînnoire. Pluginul python3-certbot-nginx permite Certbot să citească configurația Nginx și să o modifice automat.

Actualizați indexul pachetelor

Actualizați întotdeauna listele de pachete înainte de a instala software nou:

sudo apt update
sudo apt upgrade -y

Instalați Certbot cu pluginul Nginx

sudo apt install certbot python3-certbot-nginx -y

Verificați instalarea

certbot --version

Rezultat așteptat (versiunea poate varia):

certbot 2.x.x

> Notă pentru utilizatorii Ubuntu 18.04: Dacă versiunea implicită APT a Certbot este depășită, instalați prin Snap pentru cea mai recentă versiune:

> “`bash

> sudo snap install –classic certbot

> sudo ln -s /snap/bin/certbot /usr/bin/certbot

> “`

Pasul 2 — Configurarea blocului serverului Nginx

Certbot trebuie să detecteze domeniul dvs. în configurația Nginx pentru a o modifica automat. Dacă nu ați creat deja un bloc de server pentru domeniul dvs., faceți-o acum.

Creați un bloc de server

Înlocuiți yourdomain.com cu numele domeniului dvs. real în întregul ghid:

sudo nano /etc/nginx/sites-available/yourdomain.com

Adăugați următoarea configurație de bază:

server {
    listen 80;
    listen [::]:80;

    server_name yourdomain.com www.yourdomain.com;

    root /var/www/yourdomain.com/html;
    index index.html index.htm index.nginx-debian.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

Activați blocul serverului

sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/

Testați configurația Nginx

Validați întotdeauna configurația Nginx înainte de a o reîncărca:

sudo nginx -t

Rezultatul așteptat:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Reîncărcați Nginx

sudo systemctl reload nginx

Pasul 3 — Obținerea unui certificat SSL Let's Encrypt

Cu Nginx configurat și Certbot instalat, puteți solicita acum certificatul SSL.

Rulați Certbot cu pluginul Nginx

sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

Explicarea steagurilor:

    --nginx — Spune Certbot să utilizeze pluginul Nginx pentru configurare automată
    -d yourdomain.com — Specifică domeniul principal
    -d www.yourdomain.com — Adaugă subdomeniul www la același certificat (Subject Alternative Name)
    
    Explicarea prompturilor interactive
    Certbot vă va ghida printr-un scurt asistent de configurare:
    1. Adresa de e-mail
    Enter email address (used for urgent renewal and security notices):
    Furnizați o adresă de e-mail valabilă. Let's Encrypt o folosește pentru a vă notifica despre certificatele care expiră și problemele de securitate.
    2. Termenii de serviciu
    Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf
    (A)gree/(C)ancel:
    Tastați A și apăsați Enter.
    3. Buletinul informativ EFF (Opțional)
    Would you be willing to share your email address with the Electronic Frontier Foundation?
    (Y)es/(N)o:
    Aceasta este opțională. Tastați N dacă preferați să nu vă abonați.
    4. Redirecționare de la HTTP la HTTPS
    Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
    1: No redirect
    2: Redirect - Make all requests redirect to secure HTTPS access
    Alegeți întotdeauna opțiunea 2. Aceasta asigură că toți vizitatorii sunt actualizați automat la HTTPS, eliminând problemele de conținut mixt și îmbunătățind poziția de securitate.
    Rezultat reușit
    Dacă totul este configurat corect, veți vedea:
    Successfully received certificate.
    Certificate is saved at: /etc/letsencrypt/live/yourdomain.com/fullchain.pem
    Key is saved at:         /etc/letsencrypt/live/yourdomain.com/privkey.pem
    This certificate expires on YYYY-MM-DD.
    These files will be updated when the certificate renews.
    
    Deploying certificate
    Successfully deployed certificate for yourdomain.com to /etc/nginx/sites-available/yourdomain.com
    Successfully deployed certificate for www.yourdomain.com to /etc/nginx/sites-available/yourdomain.com
    Congratulations! You have successfully enabled HTTPS on https://yourdomain.com and https://www.yourdomain.com
    Ce a modificat Certbot în Nginx
    După rulare, Certbot adaugă automat directivele SSL la blocul serverului. Configurația dvs. va arăta acum similar cu aceasta:
    server {
        server_name yourdomain.com www.yourdomain.com;
    
        root /var/www/yourdomain.com/html;
        index index.html index.htm;
    
        location / {
            try_files $uri $uri/ =404;
        }
    
        listen 443 ssl;
        ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
        include /etc/letsencrypt/options-ssl-nginx.conf;
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
    }
    
    server {
        if ($host = www.yourdomain.com) {
            return 301 https://$host$request_uri;
        }
        if ($host = yourdomain.com) {
            return 301 https://$host$request_uri;
        }
    
        listen 80;
        server_name yourdomain.com www.yourdomain.com;
        return 404;
    }
    Pasul 4 — Verificarea instalării SSL
    După ce Certbot se finalizează, verificați că certificatul SSL este corect instalat și funcțional.
    Metoda 1: Verificare în Browser
    Deschideți browserul web și navigați la https://yourdomain.com. Căutați:
    
    Pictograma lacătului în bara de adrese — confirmă o conexiune SSL activă și de încredere
    Fără avertismente de securitate — certificatul este valid și de încredere pentru browserul dumneavoastră
    HTTPS în URL — cererile HTTP ar trebui să se redirecționeze automat la HTTPS
    
    Faceți clic pe pictograma lacătului și selectați "Certificate" pentru a vizualiza emitenul (ar trebui să afișeze "Let's Encrypt") și data expirării.
    Metoda 2: Analiză profundă SSL Labs
    Pentru o audit de securitate cuprinzătoare, utilizați Qualys SSL Labs:
    
    Navigați la https://www.ssllabs.com/ssltest/
  • Introduceți numele domeniului
  • Faceți clic pe "Submit"
  • O configurație corectă Let's Encrypt + Nginx ar trebui să obțină scorul A sau A+. Dacă obțineți un scor mai mic, SSL Labs va identifica punctele slabe specifice de abordat.

    Metoda 3: Verificare din linia de comandă

    Verificați detaliile certificatului direct din terminal:

    sudo certbot certificates

    Rezultat:

    Found the following certs:
      Certificate Name: yourdomain.com
        Serial Number: abc123...
        Key Type: RSA
        Domains: yourdomain.com www.yourdomain.com
        Expiry Date: YYYY-MM-DD HH:MM:SS+00:00 (VALID: 89 days)
        Certificate Path: /etc/letsencrypt/live/yourdomain.com/fullchain.pem
        Private Key Path: /etc/letsencrypt/live/yourdomain.com/privkey.pem

    Metoda 4: Comandă OpenSSL

    Verificați lanțul de certificat și expirarea folosind OpenSSL:

    echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -dates -issuer

    Rezultat așteptat:

    notBefore=Mon Jan  1 00:00:00 2025 GMT
    notAfter=Tue Apr  1 00:00:00 2025 GMT
    issuer=C=US, O=Let's Encrypt, CN=R11

    Pasul 5 — Configurarea Reînnoirii Automate a Certificatelor

    Certificatele Let's Encrypt expiră după 90 de zile. Această perioadă scurtă de valabilitate este intenționată — limitează expunerea dacă o cheie privată este compromisă. Certbot gestionează reînnoirile automat, dar ar trebui să verifici că automatizarea funcționează corect.

    Cum funcționează Reînnoirea Certbot

    Când instalezi Certbot prin APT sau Snap, acesta creează automat un timer systemd (sau cron job pe sisteme mai vechi) care rulează de două ori pe zi. Verifică dacă vreun certificat este în ultimele 30 de zile înainte de expirare și le reînnoiește automat.

    Verifică Timerul Systemd

    sudo systemctl status certbot.timer

    Rezultat așteptat:

    ● certbot.timer - Run certbot twice daily
         Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
         Active: active (waiting) since ...
        Trigger: ...
       Triggers: ● certbot.service

    Dacă timerul este activ și activat, reînnoirea automată este deja configurată.

    Testează Procesul de Reînnoire (Dry Run)

    Înainte de a te baza pe reînnoirea automată, simulează-o pentru a confirma că totul funcționează:

    sudo certbot renew --dry-run

    Rezultat cu succes:

    Simulating renewal of an existing certificate for yourdomain.com and www.yourdomain.com
    
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Congratulations, all simulated renewals succeeded:
      /etc/letsencrypt/live/yourdomain.com/fullchain.pem (success)
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Dacă dry run-ul reușește, certificatele tale se vor reînnoi automat fără nicio intervenție manuală.

    Verifică Cron Job-ul (Sisteme Vechi)

    Pe versiunile mai vechi de Ubuntu care nu folosesc timere systemd, verifică cron job-ul Certbot:

    sudo cat /etc/cron.d/certbot

    Ar trebui să vezi o linie similară cu:

    0 */12 * * * root test -x /usr/bin/certbot -a ! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew

    Aceasta rulează Certbot de două ori pe zi la intervale aleatorii pentru a evita supraîncărcarea serverelor Let's Encrypt.

    Reînnoire Manuală (Dacă este Necesar)

    Dacă vreodată trebuie să forțezi manual o reînnoire:

    sudo certbot renew --force-renewal
    sudo systemctl reload nginx

    > Bună practică: După orice reînnoire de certificat (manuală sau automată), reîncarcă Nginx pentru a te asigura că preia noile fișiere de certificat:

    > “`bash

    > sudo systemctl reload nginx

    > “`

    > Crocurile de reînnoire ale Certbot gestionează aceasta automat în majoritatea configurațiilor.

    Configurează Crocurile de Reînnoire

    Pentru a te asigura că Nginx se reîncarcă automat după fiecare reînnoire, adaugă un deploy hook:

    sudo nano /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh

    Adaugă următorul conținut:

    #!/bin/bash
    systemctl reload nginx

    Fă-l executabil:

    sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh

    Depanare Probleme Comune

    Eroare: "Could not bind to IPv4/IPv6"

    Certbot foloseste portul 80 pentru validarea domeniului. Daca un alt proces foloseste portul 80, provocarea va esua.

    Solutie: Opriti temporar Nginx, obtineti certificatul in modul standalone, apoi reporniti:

    sudo systemctl stop nginx
    sudo certbot certonly --standalone -d yourdomain.com -d www.yourdomain.com
    sudo systemctl start nginx

    Eroare: "DNS problem: NXDOMAIN looking up A for yourdomain.com"

    Inregistrarile DNS ale domeniului dumneavoastra nu se propaga inca catre serverele de validare ale Let's Encrypt.

    Solutie: Verificati ca inregistrarea A este setata corect:

    dig yourdomain.com A +short

    Iesirea ar trebui sa returneze adresa IP publica a serverului dumneavoastra. Propagarea DNS poate dura pana la 48 de ore, desi de obicei se rezolva in 1-2 ore.

    Eroare: "Too many certificates already issued"

    Let's Encrypt impune o limita de rata de 5 certificate duplicate pe saptamana per domeniu.

    Solutie: Folositi flag-ul --staging pentru a testa configuratia fara a atinge limitele de rata:

    sudo certbot --nginx --staging -d yourdomain.com -d www.yourdomain.com

    Dupa finalizarea testarii, revocati certificatul de staging si emiteti unul de productie.

    Eroare: "Nginx configuration test failed"

    Certbot modifica configuratia Nginx. Daca configuratia rezultata are erori de sintaxa, Nginx nu se va reincarca.

    Solutie: Testati si reparati manual configuratia:

    sudo nginx -t
    sudo nano /etc/nginx/sites-available/yourdomain.com
    # Fix any syntax errors, then:
    sudo systemctl reload nginx

    Certificat care nu se reinnouieste Automat

    Daca primiti e-mailuri de avertizare a expirarii in ciuda faptului ca aveti Certbot instalat, verificati starea cronometrului:

    sudo systemctl status certbot.timer
    sudo journalctl -u certbot.service --since "7 days ago"

    Verificati jurnalele pentru erori si adresati-le in consecinta.

    Avansat: Consolidarea configurației SSL Nginx

    Configurația implicită Let’s Encrypt + Certbot este sigură, dar o puteți consolida în continuare pentru un scor A+ SSL Labs.

    Activați HTTP/2

    Editați blocul serverului pentru a activa HTTP/2 pentru performanță îmbunătățită:

    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    Adăugați HSTS (HTTP Strict Transport Security)

    HSTS instruiește browserele să utilizeze întotdeauna HTTPS pentru domeniul dvs., chiar dacă un utilizator tastează http://:

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

    Dezactivați protocoalele și cifrurile slabe

    Adăugați aceste directive la nginx.conf sau blocul serverului:

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;
    ssl_session_tickets off;

    După efectuarea modificărilor, testați și reîncărcați întotdeauna:

    sudo nginx -t && sudo systemctl reload nginx

    Alegerea Hosting-ului Potrivit pentru Configurația Nginx + SSL

    Performanța și fiabilitatea serverului Nginx securizat cu SSL depind în mare măsură de infrastructura de bază. Iată cum se aliniază opțiunile de hosting AlexHost cu diferite cazuri de utilizare:

    • VPS Hosting — Ideal pentru majoritatea site-urilor și aplicațiilor. Accesul complet root vă permite să configurați Nginx și Certbot exact așa cum este descris în acest ghid. Planurile VPS AlexHost rulează pe Ubuntu 18.04, 20.04 și 22.04 LTS.
    • Servere Dedicate — Cel mai bun pentru site-uri cu trafic ridicat care necesită performanță maximă, resurse dedicate și control complet al hardware-ului. Rulați mai multe gazde virtuale Nginx, fiecare cu propriul certificat Let’s Encrypt.
    • VPS cu cPanel — Dacă preferați o interfață grafică pentru gestionarea certificatelor SSL alături de hosting-ul web, cPanel se integrează cu Let’s Encrypt și gestionează emiterea certificatelor prin funcția AutoSSL.
    • Certificate SSL — Pentru mediile enterprise, site-uri de comerț electronic sau aplicații care necesită certificate cu validare extinsă (EV) sau validare organizațională (OV), AlexHost oferă certificate SSL premium cu acoperire de garanție și suport dedicat.

    Concluzie

    Securizarea Nginx cu un certificat SSL Let’s Encrypt pe Ubuntu este unul dintre cei mai importanți pași pe care îi puteți lua pentru a proteja utilizatorii dvs., a îmbunătăți clasamentul motorului de căutare și a construi încredere cu publicul dvs. Întregul proces — de la instalarea Certbot la activarea reînnoirilor automate — durează mai puțin de 15 minute și nu costă nimic.

    Pentru a recapitula ceea ce ați realizat în acest ghid:

    1. ✅ Ați instalat Certbot și pluginul Nginx
    2. ✅ Ați configurat un bloc de server Nginx adecvat pentru domeniul dvs.
    3. ✅ Ați obținut un certificat SSL Let’s Encrypt de încredere
    4. ✅ Ați verificat certificatul folosind instrumente de browser, SSL Labs și OpenSSL
    5. ✅ Ați confirmat reînnoirea automată prin timer systemd și testare dry-run
    6. ✅ Ați aplicat consolidare avansată pentru o evaluare de securitate A+

    Cu serverul Nginx acum securizat, luați în considerare explorarea unor straturi suplimentare de protecție: un Web Application Firewall (WAF), fail2ban pentru protecție împotriva forței brute și audituri de securitate regulate. Dacă gestionați mai multe domenii sau aplicații, VPS Control Panels AlexHost oferă o interfață simplificată pentru gestionarea certificatelor SSL, gazdelor virtuale și configurațiilor serverului fără a sacrifica flexibilitatea unui mediu Linux.

    Utilizatorii dvs. merită o conexiune securizată. Acum au una.