Expirácia certifikátu SSL/TLS: prečo pre ňu stále padajú weby
Keď certifikát TLS expiruje, prehliadače prestanú spojeniu dôverovať a namiesto vášho webu ukážu celostránkové varovanie. API, mobilné aplikácie a integrácie, ktoré sa pripájajú k tomu istému serveru, väčšinou rovno zlyhajú, pretože expirovaný certifikát odmietnu bez akejkoľvek otázky. Samotný web pritom môže bežať bez chyby, no návštevníci sa naň nedostanú.
Obnova je automatizovaná už roky, tak prečo sa to stále deje? Pretože automatizácia pokrýva len tie certifikáty, na ktoré pri jej nastavovaní niekto myslel. Výpadky zvyčajne spôsobia tie zabudnuté: subdoména zriadená pre kampaň, load balancer s ručne nahraným certifikátom, poštový server alebo úloha obnovy, ktorá už týždne potichu zlyháva.
Platnosť certifikátov sa navyše skracuje, takže obnova prebieha čoraz častejšie.
Platnosť certifikátov sa skracuje
Pravidlá, ktorými sa riadia všeobecne dôveryhodné certifikačné autority, určuje CA/Browser Forum. V apríli 2025 schválilo hlasovanie SC-081v3 a aktuálne TLS Baseline Requirements (časť 6.3.2) stanovujú pre najdlhšiu platnosť certifikátu tento harmonogram:
- vydaný pred 15. marcom 2026: najviac 398 dní,
- vydaný od 15. marca 2026: najviac 200 dní,
- vydaný od 15. marca 2027: najviac 100 dní,
- vydaný od 15. marca 2029: najviac 47 dní.
V praxi to znamená, že do roku 2029 by sa ručne obnovovaný certifikát musel meniť zhruba každých 6 až 7 týždňov. Každý certifikát, ktorý ešte obnovujete ručne podľa pripomienky v kalendári, tak predstavuje opakované riziko výpadku.
Ani na pripomienky od certifikačnej autority sa nedá spoliehať. Let's Encrypt napríklad ukončil 4. júna 2025 posielanie mailov o expirácii.
Prečo obnova zlyhá
Bežné príčiny sú celkom všedné:
- Zlyhá validácia. Validácia cez HTTP sa pokazí po zmene presmerovania alebo firewallu, validácia cez DNS po zmene poskytovateľa DNS alebo po expirácii tokenu API.
- Obnova prebehne, ale služba sa nenačíta znova, takže webový server ďalej posiela starý certifikát.
- Certifikáty sa ručne skopírovali na load balancer, CDN, zariadenie alebo poštový server, kam automatizácia nedosiahne.
- Server nemá vlastníka. Testovacie servery a staré marketingové subdomény často majú certifikát, ale nikto za ne nezodpovedá. Viac v článku zabudnuté testovacie servery.
- Vypršal účet alebo platba za komerčný certifikát.
- Reťazec medziľahlých certifikátov je neúplný, čo niektorí klienti odmietnu ešte pred expiráciou.
Ako si expiráciu certifikátu overiť sami
Pre jeden názov hostiteľa ukáže openssl dátumy, ktoré server naozaj posiela:
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates -issuer
Pozrite sa na notAfter. Každý názov hostiteľa overte zvlášť, vrátane www, API a poštových serverov. Pri poštovom serveri so STARTTLS:
echo | openssl s_client -starttls smtp -connect mail.example.com:25 2>/dev/null | openssl x509 -noout -enddate
Názvy hostiteľov, na ktoré ste možno zabudli, nájdete v záznamoch Certificate Transparency na crt.sh vyhľadaním %.example.com. Je tam každý certifikát vydaný pre vašu doménu, aj pre subdomény, na ktoré si už nikto nespomína. Ako výsledky čítať, vysvetľuje náš článok o záznamoch Certificate Transparency.
Ako zabrániť expirácii certifikátov
- Automatizujte vydávanie a obnovu cez ACME všade, kde sa dá, a zabezpečte, aby úloha obnovy potom službu znova načítala.
- Obnovujte dlho pred expiráciou, dosť skoro na to, aby ostal čas opraviť zlyhanú validáciu.
- Nastavte upozornenie na zlyhanú obnovu, nielen na úspešnú. Klasickou príčinou je cron, ktorý skončí chybou a nikomu nič nepovie.
- Veďte zoznam všetkých názvov hostiteľov s certifikátom a zostavte ho zo záznamov Certificate Transparency, nie z pamäti.
- Sledujte zvonku. Overujte certifikát, ktorý server naozaj posiela, pretože ten vidia klienti. Interný záznam „obnovené“ nie je to isté.
- Odstráňte, čo už nepoužívate. Subdoméne, ktorá už nič neposkytuje, zrušte záznam DNS aj certifikát.
Keď certifikát už expiroval
- Obnovte ho alebo vydajte nový, nasaďte ho a službu znova načítajte.
- Cez
openssl s_clientmimo vašej siete overte, že server posiela nový dátumnotAfter. - Overte, že server posiela celý reťazec, nielen koncový certifikát.
- Skontrolujte závislých klientov: mobilné aplikácie, integrácie partnerov a webhooky možno bude treba spustiť znova.
- Zistite, prečo upozornenie neprišlo, a opravte to.
Kontrolný zoznam
- Zoznam všetkých názvov hostiteľov s certifikátom vrátane poštových serverov a API.
- Automatizácia cez ACME s opätovným načítaním služby.
- Upozornenia na zlyhanú obnovu.
- Kontrola expirácie zvonku na každom názve hostiteľa.
- Pripravenosť na platnosť 100 dní a 47 dní.
Expirovať môžu aj domény, a to s úplne inými následkami. Viac v článku čo sa stane, keď vaša doména expiruje.
Ako pomáha Datahorses
Datahorses stráži vašu firmu zvonku a overuje certifikáty, ktoré vaše servery naozaj posielajú: expiráciu, pokazené reťazce aj certifikáty podpísané samým sebou. Na blížiacu sa expiráciu certifikátu alebo domény vás upozorní 30, 14 a 3 dni vopred. Do vašich systémov nevstupujeme a žiadne prístupy nepotrebujeme. Pozrite sa, čo strážime, a v ukážkovom prehľade uvidíte, ako to vyzerá.
Ďalšie články
Bezpečnostné hlavičky HTTP, ktoré má posielať každý firemný web
Pár riadkov v odpovedi servera povie prehliadaču, aby používal HTTPS, nedovolil vloženie do rámca a obmedzil skripty. Prejdeme hlavičky, ktoré by mal web posielať, a ukážeme, ako ich overiť.
Zabudnuté staging a testovacie servery: časť, ktorú nikto nesleduje
Staging a testovacie servery vznikajú ako dočasné, no potichu prežijú celý projekt. Ako tie svoje nájsť a rozhodnúť, čo ponechať, chrániť alebo vypnúť.
PHP2Shell: ktoré verzie PHP sú opravené a ako zistiť tú vašu
Projekt PHP 21. 10. 2026 opravil 2 kritické chyby. Prinášame prehľad verzií s opravou, postup, ako zistiť, čo hlási váš server, a na čo sa opýtať poskytovateľa hostingu.