Pridobitev potrdila Let's Encrypt s Certbotom (Apache, Nginx)

SSL Branje: 3 min

Če spletno stran poganjaš na lastnem VPS ali namenskem strežniku, brezplačno potrdilo Let’s Encrypt pridobiš s programom Certbot. Certbot opravi preverjanje domene, potrdilo nastavi v spletnem strežniku in poskrbi za samodejno podaljševanje. Na gostovanju cPanel to ni potrebno, tam isto opravi AutoSSL.

Predpogoji

  • Zapis A domene (in poddomene www) kaže na naslov IP strežnika.
  • V požarnem zidu strežnika so odprta vrata 80 in 443. Let’s Encrypt domeno preveri na vratih 80, glej: Kako nastavim požarni zid na svojem VPS?
  • Na spletnem strežniku (Apache ali Nginx) je domena že nastavljena in dosegljiva prek HTTP.
  • Pravice root ali sudo.

Namestitev Certbota

AlmaLinux, Rocky Linux, CloudLinux (8, 9, 10):

dnf install epel-release
dnf install certbot python3-certbot-apache   # pri Apache
dnf install certbot python3-certbot-nginx    # pri Nginx

Debian, Ubuntu:

apt update
apt install certbot python3-certbot-apache   # pri Apache
apt install certbot python3-certbot-nginx    # pri Nginx

Pridobitev potrdila

Nginx:

certbot --nginx -d pelda.hu -d www.pelda.hu

Apache:

certbot --apache -d pelda.hu -d www.pelda.hu

Ob prvem zagonu Certbot zahteva tvoj e-poštni naslov (nanj pošlje obvestilo, če je v zvezi z računom treba kaj narediti) in sprejem pogojev uporabe. Nato opravi preverjanje, da izdati potrdilo in ga vpiše v nastavitve spletnega strežnika. Na koncu ponudi tudi preusmeritev zahtev HTTP na HTTPS.

Če ne želiš, da se dotakne nastavitev spletnega strežnika

Z ukazom certonly Certbot potrdilo le pridobi, nastavitev spletnega strežnika pa prepusti tebi. V načinu --webroot preverjalno datoteko postavi v korenski imenik spletne strani:

certbot certonly --webroot -w /var/www/pelda.hu -d pelda.hu -d www.pelda.hu

Datoteke potrdila pridejo v imenik /etc/letsencrypt/live/pelda.hu/:

Datoteka Vsebina Kam spada?
fullchain.pem potrdilo in vmesno potrdilo Nginx: ssl_certificate, Apache: SSLCertificateFile
privkey.pem zasebni ključ Nginx: ssl_certificate_key, Apache: SSLCertificateKeyFile
cert.pem le potrdilo same je ne uporabljaj, ker v njej manjka vmesno potrdilo

Zakaj je fullchain.pem prava izbira, razloži članek o vmesnem potrdilu.

Samodejno podaljševanje

Certbot, nameščen iz paketa, prinese tudi časovnik (systemd timer), ki dvakrat na dan preveri, ali je treba podaljšati katero od potrdil. V Debianu in Ubuntuju se zažene sam, v AlmaLinux, Rocky Linux in CloudLinux pa ga je treba vklopiti:

systemctl enable --now certbot-renew.timer

Preveri, ali časovnik teče:

systemctl list-timers | grep certbot

Podaljšanje poskusno, brez izdaje pravega potrdila, preizkusiš takole:

certbot renew --dry-run

Če je treba spletni strežnik po podaljšanju znova naložiti (v načinu certonly), ukaz navedi pri podaljšanju:

certbot renew --deploy-hook "systemctl reload nginx"

Potrdila Let’s Encrypt trenutno veljajo 90 dni, od februarja 2027 64, od februarja 2028 pa 45 dni (glej: Zakaj potrdila SSL ne veljajo več eno leto?). Privzeta logika podaljševanja v Certbotu se temu prilagaja. Če pa v lastnem skriptu podaljšuješ v fiksnih presledkih (na primer vsakih 60 dni), to spremeni: krajša potrdila bi do takrat že potekla. Certbot posodabljaj.

O ročnih korakih podaljšanja in iskanju napak govori članek Ročno podaljšanje potrdila Let’s Encrypt iz ukazne vrstice.

Uporabni ukazi

# Potrdila na strežniku in njihov potek
certbot certificates

# Dodajanje domene obstoječemu potrdilu
certbot --nginx --cert-name pelda.hu -d pelda.hu -d www.pelda.hu -d bolt.pelda.hu

# Brisanje potrdila
certbot delete --cert-name pelda.hu

Plačljivo potrdilo z ACME

Certbot ne deluje le z Let’s Encrypt. Če si na portalu za stranke kupil plačljivo potrdilo z naročnino ACME, na strani storitve najdeš vrednosti Server URL, EAB MAC ID in EAB MAC key. Z njimi Certbot plačljivo potrdilo pridobiva in podaljšuje enako samodejno:

certbot --nginx --server <Server URL> \
  --eab-kid <EAB MAC ID> --eab-hmac-key <EAB MAC key> \
  -d pelda.hu -d www.pelda.hu

O pridobitvi potrdila wildcard Let’s Encrypt s preverjanjem prek DNS govori ločen članek.

Nazaj: SSL – članki (35)