Let’s Encrypt vydáva certifikáty na deväťdesiat dní a obnovuje ich automaticky, a preto sa na ne týždeň po nastavení prestane myslieť. Problém je v tom, že sa automatická obnova kazí ticho: chyby nikto nevidí a o tri mesiace neskôr víta návštevníkov varovanie prehliadača. Od roku 2025 Let’s Encrypt už neposiela upozornenia na vypršanie, takže zmizla aj posledná vonkajšia pripomienka.

Nižšie sú dôvody, prečo obnova prestáva fungovať, v zostupnom poradí podľa početnosti.

1. Certifikát obnovený, ale služba ho nenačítala

Najčastejší. certbot renew prebehol, nový súbor leží na disku, ale nginx alebo Apache ďalej držia v pamäti starý — a vydávajú ho návštevníkom až do znovunačítania konfigurácie. Formálne je všetko v poriadku, fakticky má web vypršaný certifikát.

Lieči to hook spúšťaný po úspešnej obnove:

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

Zapíše sa raz do súboru obnovy (/etc/letsencrypt/renewal/example.com.conf, sekcia [renewalparams], riadok renew_hook) a ďalej funguje samo.

2. Zmenil sa webový server, ale overenie zostalo

Overenie HTTP-01 vyžaduje, aby sa súbor z /.well-known/acme-challenge/ vydával bežným HTTP. Kazí sa to obvykle takto:

  • do konfigurácie bolo pridané bezpodmienečné presmerovanie z HTTP na HTTPS — overenie spadne do presmerovania a neprejde;
  • objavilo sa pravidlo location ~ /\. s deny all, ktoré zatvára všetky adresáre s bodkou vrátane .well-known;
  • zmenil sa koreňový adresár webu, kým v nastavení certbotu zostal starý --webroot-path;
  • bolo zapnuté blokovanie podľa krajín alebo základná autentifikácia, pod ktorú spadol aj overovací server.

Správne poradie v konfigurácii: najprv samostatný location pre /.well-known/acme-challenge/ a až potom všeobecné presmerovanie.

3. Časovač je vypnutý

Obnovu spúšťa časovač systemd alebo úloha cronu a oboje sa dá omylom vypnúť pri ladení alebo stratiť pri sťahovaní servera.

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

Druhý príkaz vykoná celý cyklus obnovy v skúšobnom režime bez čerpania limitov. Je to jediná kontrola, ktorá odpovedá na otázku „obnoví sa to o mesiac“ s predstihom, a nie po fakte.

4. Doména sem už nesmeruje

Certifikát pokrýva päť domén, jedna z nich sa presťahovala na iný hosting, DNS sa zmenil. Overenie tejto domény prestane prechádzať a certbot neobnoví celý certifikát — spolu so štyrmi funkčnými doménami. Zbytočné domény treba z certifikátu odstrániť, nie hlásenie ignorovať.

5. Boli dosiahnuté limity

Let’s Encrypt obmedzuje počet certifikátov na doménu za týždeň. Obvykle je to dôsledok slučky „nevyšlo to, skúsim znova“ pri ladení. Na pokusy existuje testovací server (--dry-run alebo --test-cert) a používať ho treba skôr, než sa limit vyčerpá, nie potom.

Kontrolovať to, čo sa vydáva

Každá kontrola podľa súborov má jeden nedostatok: súbor môže byť čerstvý, a návštevník napriek tomu dostane starý certifikát. Pozerať sa treba zo strany klienta:

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

Voľba -servername je povinná: bez nej na serveri s niekoľkými webmi dostanete certifikát prvého virtuálneho hosta, a nie toho, o ktorý šlo. Vo výstupe je notAfter skutočný dátum vypršania.

Pri tej príležitosti skontrolujte reťaz:

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

Ak je certifikát jeden, medziľahlý sa nevydáva. Prehliadače takú konfiguráciu obvykle odpustia — reťaz si dovŕšia samy — kým curl, mobilné aplikácie a klienti v Jave vyhodia chybu overenia. To je klasické „u mňa sa všetko otvára, u zákazníka to nefunguje“.

Na koľko dní varovať

Tridsať dní je rozumný prvý prah: presne toľko zostáva do vypršania vo chvíli, keď certbot začína pokusy o obnovu, takže ak sa dovtedy nič nestalo, mechanizmus je pokazený. Štrnásť dní je druhý signál a vyžaduje konať už dnes. Sedem je núdzový.

Dôležité je strážiť všetky certifikáty naraz, aj tie mimo Let’s Encrypt: kúpené na rok sa zabúdajú najspoľahlivejšie, lebo za rok všetci zabudnú aj na ne, aj na to, na čiu poštu chodia upozornenia. Jedna stránka so zoznamom domén, dátumami a zostávajúcim počtom dní vec uzatvára úplne — ako v ukážke nižšie.