Certbot cu Sectigo ACME pe Apache și Nginx (Ubuntu, Debian, AlmaLinux)
TipărirePe 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șiServerAliasîn Apache,server_nameîn Nginx. - Porturile 80 și 443 sunt deschise în firewall-ul serverului, de exemplu cu
sudo ufw allow 80/tcpșisudo ufw allow 443/tcppe Ubuntu sau cusudo firewall-cmd --permanent --add-service=http --add-service=https, urmat desudo 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țiune | Rol |
|---|---|
--nginx, --apache, --webroot | Cum se validează domeniul și dacă serverul web se configurează automat |
--server | Directorul ACME Sectigo (Server URL din contul de client) |
--eab-kid, --eab-hmac-key | EAB MAC ID și EAB MAC Key; necesare doar la prima înregistrare a contului ACME |
--email | Adresa pentru notificările despre cont și expirare |
--agree-tos, --non-interactive | Acceptă termenii și rulează fără întrebări (util în scripturi) |
-d | Un nume din certificat; se repetă pentru fiecare nume |
--cert-name | Numele sub care Certbot păstrează și reînnoiește certificatul |
--redirect | Adaugă redirecționarea de la HTTP la HTTPS |
--deploy-hook | Comanda 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
-dnu apare înServerName,ServerAliassauserver_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
-wnu 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.