Let's Encrypt izdaje sertifikate na devedeset dana i obnavlja ih automatski, zbog čega ljudi prestanu da misle o njima nedelju dana posle podešavanja. Nevolja je što se automatsko obnavljanje kvari tiho: greške niko ne vidi, a tri meseca kasnije sajt dočekuje posetioce upozorenjem pregledača. Od 2025. Let's Encrypt više ne šalje obaveštenja o isteku, pa je nestao i poslednji spoljni podsetnik.

Ispod su razlozi zbog kojih obnavljanje prestaje da radi, po opadajućoj učestalosti.

1. Sertifikat je obnovljen a servis ga nikada nije ponovo pročitao

Najčešći. certbot renew je odradio, novi fajl je na disku, a nginx ili Apache drže stari u memoriji — servirajući ga posetiocima dok se konfiguracija ponovo ne učita. Formalno je sve u redu; zapravo sajt ima istekao sertifikat.

Lek je kuka koja se pokreće posle uspešnog obnavljanja:

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

To se jednom upisuje u fajl obnavljanja (/etc/letsencrypt/renewal/example.com.conf, odeljak [renewalparams], red renew_hook) i odatle nadalje radi samo.

2. Veb server se promenio a izazov nije

Izazov HTTP-01 zahteva da se fajl iz /.well-known/acme-challenge/ servira preko običnog HTTP-a. Obično se pokvari ovako:

  • u konfiguraciju je dodato bezuslovno preusmerenje sa HTTP na HTTPS — izazov prati preusmerenje i ne uspeva;
  • pojavilo se pravilo location ~ /\. sa deny all, zatvarajući svaki direktorijum sa tačkom, uključujući .well-known;
  • koren sajta je premešten a podešavanja certbot-a zadržala su staru --webroot-path;
  • uključeno je blokiranje po zemljama ili osnovna autentifikacija i uhvatilo je server za proveru zajedno sa svima ostalima.

Ispravan redosled u konfiguraciji: prvo poseban location za /.well-known/acme-challenge/, pa tek onda opšte preusmerenje.

3. Tajmer je isključen

Obnavljanje se pokreće iz systemd tajmera ili cron posla, a i jedno i drugo može biti isključeno greškom pri otklanjanju grešaka ili izgubljeno pri seljenju servera.

systemctl list-timers | grep certbot
sudo certbot renew --dry-run

Druga komanda izvodi pun ciklus obnavljanja u probnom režimu ne trošeći vašu kvotu. To je jedina provera koja unapred odgovara na pitanje „hoće li se ovo obnoviti za mesec dana" umesto naknadno.

4. Domen više ne pokazuje ovde

Sertifikat pokriva pet domena, jedan od njih je prešao na drugog domaćina, DNS se promenio. Provera za taj domen prestaje da prolazi i certbot ne obnavlja ceo sertifikat — uključujući četiri domena koja rade. Suvišni domeni moraju se ukloniti iz sertifikata, a ne ignorisati zajedno sa porukom.

5. Dostigli ste ograničenja učestalosti

Let's Encrypt ograničava broj sertifikata po domenu nedeljno. To je obično rezultat petlje „nije radilo, da probam opet" tokom otklanjanja grešaka. Za eksperimente postoji probni server (--dry-run ili --test-cert), i njega treba koristiti pre nego što se ograničenje iscrpi, a ne posle.

Proverite šta se servira, a ne šta se čuva

Svaka provera zasnovana na fajlovima na disku ima jednu manu: fajl može biti svež dok posetilac dobija stari sertifikat. Pogledajte sa strane klijenta:

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

Opcija -servername je obavezna: bez nje na serveru sa nekoliko sajtova dobijate sertifikat onog virtuelnog domaćina koji dolazi prvi, a ne onog na koji ste mislili. U izlazu je notAfter stvarni datum isteka.

Kad ste već tu, proverite lanac:

echo | openssl s_client -connect example.com:443 -servername example.com -showcerts 2>/dev/null | grep -c 'BEGIN CERTIFICATE'

Ako postoji samo jedan sertifikat, posredni se ne servira. Pregledači tu postavku obično opraštaju — sami grade lanac — ali curl, mobilne aplikacije i Java klijenti neće proći proveru. To je klasično „kod mene se otvara lepo a kod kupca ne radi".

Koliko dana upozorenja

Trideset dana je razumno prvo upozorenje: toliko preostaje i kada certbot počne da pokušava obnavljanje, pa ako se do tada ništa nije dogodilo, mehanizam je pokvaren. Četrnaest dana je drugo upozorenje, koje već zahteva akciju danas. Sedam je hitan slučaj.

Bitno je pratiti sve sertifikate odjednom, uključujući i one koji nisu došli od Let's Encrypt-a: oni kupljeni na godinu dana zaboravljaju se najpouzdanije od svih, jer za godinu dana svi zaborave i njih i u čije sanduče stižu obaveštenja. Jedna stranica sa domenima, datumima i preostalim danima zatvara pitanje u celosti — kao na demou ispod.