Čo robiť, keď expiruje SSL certifikát
· 6 min čítania
Expirovaný SSL certifikát blokuje prístup hláškou o nezabezpečenom spojení a konverzia padá na nulu. Čo robiť hneď a ako tomu predísť.
Čo vidí návštevník
Expirovaný certifikát spustí v prehliadači plnoobrazovkové varovanie:
- Chrome / Edge: "Your connection is not private" (NET::ERR_CERT_DATE_INVALID)
- Firefox: "Warning: Potential Security Risk Ahead" (SEC_ERROR_EXPIRED_CERTIFICATE)
- Safari: "This Connection Is Not Private"
Bežný návštevník klikne "Späť". Drvivá väčšina návštevníkov pri takomto varovaní stránku opustí. Crawleri vyhľadávačov (Googlebot, Bingbot) prestanú indexovať a po niekoľkých dňoch začnete strácať pozície vo vyhľadávaní.
Postup ak práve teraz expiroval
- Zistite, kto certifikát vystavil. V termináli:
openssl s_client -connect mywebsite.com:443 -servername mywebsite.com < /dev/null 2>/dev/null | openssl x509 -noout -issuer -dates - Let's Encrypt (zadarmo, 90-dňová platnosť): typicky cez
certbot renewalebo cez panel hostingu (One-click renewal). - Komerčný cert (DigiCert, Sectigo, GlobalSign): prihláste sa do admin panela vydavateľa, vygenerujte nový CSR a prejdite validáciou domény (DNS TXT záznam alebo email).
- Nasaďte nový cert do reverse proxy (nginx, Caddy, Traefik) a reštartujte alebo znovu načítajte (reload) proces.
- Overte cez SSL Labs alebo cez náš SSL check nástroj, či sa cert správne servuje a certifikačný reťazec je kompletný.
Pozor: Nezabudnite ani na intermediate cert - bez neho síce moderné prehliadače môžu reťazec dotiahnuť cez AIA (Authority Information Access), ale starší klienti a niektoré API knižnice zlyhajú.
Automatický renewal: Let's Encrypt + certbot
Najjednoduchšia prevencia je úplne automatizovať obnovu. Let's Encrypt cert sa obnovuje každých 90 dní cez certbot:
# /etc/cron.d/certbot-renew
0 3 * * * root certbot renew --quiet --deploy-hook "systemctl reload nginx"
Tento cron beží denne o 3:00 ráno. Certbot interne kontroluje, či sa cert blíži k expirácii (keď zostáva menej než tretina jeho životnosti, čo pri 90-dňovom Let's Encrypt certe vychádza približne na 30 dní pred koncom). Ak áno, obnoví ho a po úspechu znovu načíta nginx. Inak nerobí nič.
Caddy a Traefik: úplne automaticky
Ak používate Caddy alebo Traefik ako reverse proxy, ACME challenge je zabudovaná priamo v binárke. Stačí v configu označiť doménu a server si cert vyžiada aj obnoví sám:
# Caddyfile
mywebsite.com {
reverse_proxy localhost:3000
}
Žiadny certbot, žiadny cron. Caddy si v pozadí volá Let's Encrypt API a spravuje celý cyklus obnovy.
Komerčné certy: 1-3 ročná platnosť
CA/B Forum v marci 2025 odhlasoval graduálne skrátenie životnosti SSL certifikátov. Od marca 2026 je maximálna životnosť 200 dní (predtým 398). Od marca 2027 klesne na 100 dní a od marca 2029 na 47 dní (CA/B Forum SC-081). Niektoré firmy napriek tomu stále uprednostňujú komerčné CA, a to z týchto dôvodov:
- Extended Validation (EV) - kedysi zobrazoval názov organizácie v adresnom riadku. Chrome ho však od septembra 2019 (verzia 77) nezobrazuje prominentne a ďalšie prehliadače EV UI tiež utlmili alebo úplne odstránili.
- Wildcard pre veľa subdomén - aj keď Let's Encrypt už wildcards podporuje cez DNS-01.
- Warranty - finančná zodpovednosť CA pri compromise.
- Súlad s predpismi (compliance) / audit - niektoré odvetvia majú externé požiadavky.
Pre väčšinu webov stačí Let's Encrypt alebo iná zadarmo CA (ZeroSSL, Buypass).
Monitoring expirácie ako záchranná sieť
Aj keď máte automatický renewal, monitoring expirácie funguje ako poistka. Renewal totiž môže zlyhať z viacerých dôvodov:
- rate limit zo strany CA (Let's Encrypt: 5 duplikátov / 7 dní)
- zmena DNS, ktorá rozbije ACME challenge
- firewall pravidlo blokujúce port 80 (HTTP-01 challenge)
- pád procesu certbot alebo cron-u, ktorý nikto nezaregistroval
ePulz.io sleduje expiry každého kontrolovaného endpointu a posiela alert 30, 14, 7, 3 a 1 deň pred koncom platnosti. Stačí jeden zelený signál, že sa cert stihol obnoviť - a máte istotu, že automatika funguje.
Expirácia nie je jediné zlyhanie SSL
"Expirovaný" je zlyhanie, ktoré pozná každý, no TLS handshake sa môže pokaziť aj niekoľkými inými spôsobmi a každý ukáže návštevníkovi takmer rovnaké strašiace varovanie:
| Problém | Chyba prehliadača | Typická príčina |
|---|---|---|
| Expirovaný | NET::ERR_CERT_DATE_INVALID | Renewal nezbehol |
| Ešte neplatný | NET::ERR_CERT_DATE_INVALID | Zlé hodiny servera / cert vystavený do budúcnosti |
| Nesúhlas mena | NET::ERR_CERT_COMMON_NAME_INVALID | Cert je pre www, ale servuje sa na apex (alebo naopak) |
| Neúplný reťazec | NET::ERR_CERT_AUTHORITY_INVALID | Chýba intermediate cert |
| Self-signed | NET::ERR_CERT_AUTHORITY_INVALID | Staging cert prenikol do produkcie |
| Zlý host na zdieľanej IP | rôzne | Zlá konfigurácia SNI na reverse proxy |
Monitor, ktorý sleduje len dátum expirácie, úplne prehliadne nesúhlas mena aj chýbajúci intermediate. Skutočný SSL monitoring validuje celý handshake, nie iba jedno pole s dátumom. Tú istú validáciu si viete kedykoľvek spustiť ručne cez náš SSL check nástroj.
Prečo sa životnosť certifikátu stále skracuje
Skracovanie z 398 dní na 47 (CA/B Forum SC-081) nie je svojvoľné. Kratšia životnosť obmedzuje okno škody, ak dôjde ku kompromitácii súkromného kľúča, a vynucuje automatizáciu: 47-dňový certifikát obnovovaný ručne jednoducho nie je udržateľný, takže prevádzkovatelia sú tlačení smerom k ACME. Praktický záver je tvrdý - do roku 2029 je ručná obnova fakticky mŕtva. Ak ešte stále raz ročne preklikávate dashboard CA, naplánujte prechod na automatizované vystavovanie už teraz, kým sú termíny vzdialené roky, nie týždne.
Jedna doména, veľa certifikátov
Väčšina reálnych výpadkov sa stane na subdoméne, ktorú nikto nesledoval. Jedna firma ľahko prevádzkuje samostatné certifikáty pre www, api, mail, status a hŕstku subdomén smerom k zákazníkom, často vystavené rôznymi nástrojmi v rôznych intervaloch. Apex sa cez Caddy obnovuje v pohode; host api má stále ručne nainštalovaný komerčný cert spred dvoch rokov, ktorý potichu vyprší.
Riešením je zinventarizovať každý hostname, na ktorom končí TLS, a monitorovať každý zvlášť. Nepredpokladajte, že keď je homepage zelená, je zelené aj API, na ktorom závisí vaša mobilná aplikácia. Ak neviete s istotou, ktoré hostnames vôbec existujú, dobrý štart je DNS lookup vašej domény na nájdenie A a CNAME záznamov, na ktoré ste zabudli.
Wildcard, SAN a kompromisy
- Wildcard (
*.example.com) pokrýva jedným certom akúkoľvek subdoménu jednej úrovne. Pohodlné, no jeden súkromný kľúč teraz chráni všetko a kompromitácia je širšia. Let's Encrypt vystavuje wildcards iba cez DNS-01 challenge. - SAN (multi-domain) vymenúva v jednom certifikáte konkrétne hostnames. Väčšia kontrola, no pri pridaní hostu musíte cert vystaviť nanovo.
- Cert na každý host je najviac izolovaný a najľahšie automatizovateľný cez ACME, za cenu väčšieho počtu certifikátov na sledovanie. Univerzálne správna voľba neexistuje; čím viac certifikátov máte, tým dôležitejší je monitoring, lebo ľudský mozog si nepamätá 14 nezávislých dátumov expirácie.
Aktivujte SSL monitoring
Upozornenia 30, 14, 7, 3 a 1 deň pred expiráciou. Bez konfigurácie, bez DNS zmien. 7 dní zadarmo.
Súvisiace
Vyskúšajte ePulz.io zadarmo - na 7 dní bez potreby kreditnej karty.
Vytvoriť účet