Certbot cu Sectigo ACME pe Apache și Nginx (Ubuntu, Debian, AlmaLinux)

Tipărire
  • 0

Pe un VPS sau server dedicat Linux cu Apache ori Nginx, Certbot poate obține un certificat Sectigo prin abonamentul dvs. ACME, poate configura HTTPS în serverul web și reînnoiește apoi certificatul automat. Aveți nevoie de acces root sau sudo, de un sistem de operare susținut și actualizat și de datele ACME din Sectigo ACME Certificate-as-a-Service. Mai jos găsiți instalarea, primul certificat și verificarea reînnoirii.

Înainte de a începe

  • Înregistrarea A a domeniului (și AAAA, dacă folosiți IPv6) indică spre acest server; pentru o zonă găzduită la TopHost pașii sunt în articolul despre înregistrările A.
  • Site-ul se deschide deja prin HTTP, iar serverul web are pentru el o gazdă virtuală cu numele corect: ServerName și ServerAlias în Apache, server_name în Nginx.
  • Porturile 80 și 443 sunt deschise în firewall-ul serverului, de exemplu cu sudo ufw allow 80/tcp și sudo ufw allow 443/tcp pe Ubuntu sau cu sudo firewall-cmd --permanent --add-service=http --add-service=https, urmat de sudo firewall-cmd --reload, pe AlmaLinux și Rocky Linux.
  • Aveți la îndemână Server URL, EAB MAC ID și EAB MAC Key din contul de client.

Dacă pe server rulează un panou precum CyberPanel sau FastPanel, panoul își administrează singur configurația serverului web și poate suprascrie modificările făcute de Certbot. În acest caz folosiți instrumentele SSL ale panoului sau metoda webroot descrisă mai jos.

Pasul 1. Instalați Certbot

Ubuntu și Debian: din pachetele distribuției

sudo apt update
sudo apt install certbot python3-certbot-nginx

Pentru Apache instalați python3-certbot-apache în locul lui python3-certbot-nginx. Varianta aceasta este cea mai simplă, dar versiunea poate fi ceva mai veche decât ultima lansare.

Ubuntu și Debian: ca snap (metoda recomandată de proiectul Certbot)

sudo apt remove certbot
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

Prima comandă e necesară doar dacă Certbot a fost instalat anterior din pachete. Snap-ul se actualizează singur și conține deja pluginurile pentru Apache și Nginx.

AlmaLinux, Rocky Linux și alte sisteme bazate pe RHEL

sudo dnf install epel-release
sudo dnf install certbot python3-certbot-nginx

Pentru Apache folosiți python3-certbot-apache. Pe Red Hat Enterprise Linux propriu-zis activați întâi depozitul EPEL după documentația Red Hat. Sistemele foarte vechi, doar cu yum și fără actualizări, nu sunt o bază bună pentru Certbot; actualizați sistemul de operare înainte de a începe.

Verificați instalarea cu certbot --version.

Pasul 2. Obțineți și instalați certificatul

Modul automat: Certbot configurează serverul web

Pentru Nginx (înlocuiți valorile de exemplu cu datele dvs.):

sudo certbot --nginx \
  --server https://acme.sectigo.com/v2/DV \
  --eab-kid YOUR_EAB_MAC_ID \
  --eab-hmac-key YOUR_EAB_MAC_KEY \
  --email admin@example.com --agree-tos --non-interactive \
  -d example.com -d www.example.com \
  --cert-name example.com --redirect

Pentru Apache comanda este aceeași, cu --apache în loc de --nginx. Certbot validează domeniul prin HTTP, salvează certificatul în /etc/letsencrypt/live/example.com/ (Certbot folosește acest dosar pentru orice autoritate de certificare, nu doar pentru Let's Encrypt), adaugă setările HTTPS în gazda virtuală și, datorită opțiunii --redirect, trimite vizitatorii de pe HTTP pe HTTPS.

Modul manual: editați singur configurația

Dacă doriți control deplin asupra fișierelor de configurare, obțineți doar certificatul prin metoda webroot. Certbot pune fișierul de validare în dosarul site-ului:

sudo certbot certonly --webroot -w /var/www/example.com \
  --server https://acme.sectigo.com/v2/DV \
  --eab-kid YOUR_EAB_MAC_ID --eab-hmac-key YOUR_EAB_MAC_KEY \
  --email admin@example.com --agree-tos --non-interactive \
  -d example.com -d www.example.com --cert-name example.com \
  --deploy-hook "systemctl reload nginx"

Apoi indicați fișierele în gazda virtuală. În Nginx:

ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

În Apache:

SSLCertificateFile    /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

Înainte de reîncărcare verificați configurația cu sudo nginx -t sau sudo apachectl configtest. Opțiunea --deploy-hook face ca Certbot să reîncarce serverul web după fiecare reînnoire; pentru Apache scrieți systemctl reload apache2 (Debian, Ubuntu) sau systemctl reload httpd (familia RHEL).

Ce înseamnă opțiunile

OpțiuneRol
--nginx, --apache, --webrootCum se validează domeniul și dacă serverul web se configurează automat
--serverDirectorul ACME Sectigo (Server URL din contul de client)
--eab-kid, --eab-hmac-keyEAB MAC ID și EAB MAC Key; necesare doar la prima înregistrare a contului ACME
--emailAdresa pentru notificările despre cont și expirare
--agree-tos, --non-interactiveAcceptă termenii și rulează fără întrebări (util în scripturi)
-dUn nume din certificat; se repetă pentru fiecare nume
--cert-nameNumele sub care Certbot păstrează și reînnoiește certificatul
--redirectAdaugă redirecționarea de la HTTP la HTTPS
--deploy-hookComanda rulată după fiecare reînnoire reușită

Pasul 3. Verificați reînnoirea

Atât snap-ul, cât și pachetele distribuției instalează un timer sau o sarcină cron care rulează certbot renew de două ori pe zi; certificatele se reînnoiesc când se apropie de expirare. Verificări utile:

sudo certbot certificates
systemctl list-timers | grep certbot

Prima comandă afișează certificatele, numele și datele lor de expirare. Ca să testați o dată o reînnoire reală, rulați sudo certbot renew --cert-name example.com --force-renewal. Nu o repetați des: fiecare rulare forțată emite un certificat nou.

Erori frecvente

  • Nu se găsește gazda virtuală potrivită (virtual host / server block). Numele dat cu -d nu apare în ServerName, ServerAlias sau server_name. Adăugați-l, reîncărcați serverul web și încercați din nou.
  • Timeout sau conexiune refuzată la validare. Portul 80 este închis în firewall sau înregistrarea DNS indică încă spre alt server.
  • 404 pentru fișierul de validare (webroot). Calea din -w nu este dosarul din care se servește de fapt site-ul sau o regulă din configurație blochează /.well-known/acme-challenge/.
  • Erori unauthorized sau external account binding. Datele EAB sau adresa serverului sunt incomplete ori un nume lipsește din lista de domenii a abonamentului.
  • Browserul arată încă certificatul vechi. Serverul web nu a fost reîncărcat sau altă gazdă virtuală răspunde pentru același nume.

Documentația Certbot: eff-certbot.readthedocs.io. Dacă aveți un VPS administrat de TopHost sau pașii de mai sus nu rezolvă problema, deschideți un tichet cu comanda și textul complet al erorii, dar fără EAB MAC Key.

Articole utile

Răspunsul a fost util?