A Let’s Encrypt kilencven napra ad ki tanúsítványt, és automatikusan megújítja, ezért egy héttel a beállítás után az ember elfelejt gondolni rájuk. A baj az, hogy az automatikus megújítás csendben romlik el: a hibákat senki nem látja, három hónappal később pedig a látogatókat a böngésző figyelmeztetése fogadja. 2025 óta a Let’s Encrypt már nem küld értesítést a lejáratról, így az utolsó külső emlékeztető is eltűnt.

Alább azok az okok, amelyek miatt a megújítás leáll, gyakoriság szerint csökkenő sorrendben.

1. A tanúsítvány megújult, de a szolgáltatás nem töltötte be

A leggyakoribb. A certbot renew lefutott, az új fájl a lemezen van, az nginx vagy az Apache viszont továbbra is a régit tartja a memóriában — és azt adja a látogatóknak a konfiguráció újratöltéséig. Formálisan minden rendben, ténylegesen a webhelynek lejárt tanúsítványa van.

Ezt egy sikeres megújítás után futó hook orvosolja:

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

Egyszer beírod a megújítási fájlba (/etc/letsencrypt/renewal/example.com.conf, [renewalparams] szakasz, renew_hook sor), és onnantól magától működik.

2. Megváltozott a webszerver, az ellenőrzés viszont maradt

A HTTP-01 ellenőrzés megköveteli, hogy a /.well-known/acme-challenge/ alatti fájlt sima HTTP-n adja ki a szerver. Ez általában így romlik el:

  • feltétel nélküli átirányítás került a konfigurációba HTTP-ről HTTPS-re — az ellenőrzés az átirányításba fut, és nem megy át;
  • megjelent egy location ~ /\. szabály deny all értékkel, amely minden ponttal kezdődő könyvtárat lezár, köztük a .well-known könyvtárat;
  • megváltozott a webhely gyökérkönyvtára, a certbot beállításaiban viszont a régi --webroot-path maradt;
  • bekapcsolt az országok szerinti tiltás vagy az alap hitelesítés, amely alá az ellenőrző szerver is beesett.

A helyes sorrend a konfigurációban: előbb külön location a /.well-known/acme-challenge/ útvonalhoz, és csak azután az általános átirányítás.

3. Az időzítő ki van kapcsolva

A megújítást systemd-időzítő vagy cron-feladat indítja, és mindkettő véletlenül kikapcsolható hibakereséskor, vagy elveszhet a szerver költöztetésekor.

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

A második parancs próbaüzemben végigviszi a teljes megújítási ciklust, a kvóták terhelése nélkül. Ez az egyetlen ellenőrzés, amely előre válaszol arra a kérdésre, hogy „megújul-e egy hónap múlva”, nem pedig utólag.

4. A domain már nem ide mutat

A tanúsítvány öt domaint fed le, egyikük másik tárhelyre költözött, a DNS megváltozott. Ennek a domainnek az ellenőrzése nem megy át, és a certbot nem újítja meg a teljes tanúsítványt — a négy működő domainnel együtt. A fölösleges domaineket el kell távolítani a tanúsítványból, nem figyelmen kívül hagyni az üzenetet.

5. Elérted a korlátokat

A Let’s Encrypt heti korlátot szab a domainenkénti tanúsítványok számára. Ez általában a hibakeresés közbeni „nem sikerült, próbálom újra” hurok következménye. A kísérletekhez van tesztszerver (--dry-run vagy --test-cert), és ezt még a kvóta kimerülése előtt kell használni, nem utána.

Azt ellenőrizd, amit kiad

Minden fájlok alapján végzett ellenőrzésnek van egy hiányossága: a fájl lehet friss, a látogató mégis a régi tanúsítványt kapja. A kliens felől kell nézni:

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

A -servername kapcsoló kötelező: nélküle egy több webhelyet futtató szerveren az első virtuális host tanúsítványát kapod, nem azt, amelyikről szó volt. A kimenetben a notAfter a valódi lejárati dátum.

Egyúttal ellenőrizd a láncot:

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

Ha csak egy tanúsítvány van, a köztes nem kerül kiadásra. A böngészők ezt a beállítást általában megbocsátják — maguk zárják le a láncot —, a curl, a mobilalkalmazások és a Java-kliensek viszont ellenőrzési hibát dobnak. Ez a klasszikus „nálam minden megnyílik, az ügyfélnél nem működik”.

Hány napra előre figyelmeztess

Harminc nap észszerű első küszöb: pontosan ennyi van hátra a lejáratig akkor, amikor a certbot elkezdi a megújítási kísérleteket, tehát ha addig nem történt semmi, a mechanizmus elromlott. Tizennégy nap a második jelzés, és már ma cselekvést kíván. A hét nap vészhelyzet.

Fontos, hogy egyszerre tartsd szemmel az összes tanúsítványt, azokat is, amelyek nem a Let’s Encrypttől vannak: az egy évre vásároltakról feledkeznek meg a legbiztosabban, mert egy év alatt mindenki elfelejti őket is, és azt is, kinek a postájára érkeznek az értesítések. Egyetlen oldal a domainek listájával, a dátumokkal és a hátralévő napokkal teljesen lezárja a kérdést — mint az alábbi bemutatóban.