Späť na blog

Č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 robiť, keď expiruje SSL certifikát

Č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

  1. 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
  2. Let's Encrypt (zadarmo, 90-dňová platnosť): typicky cez certbot renew alebo cez panel hostingu (One-click renewal).
  3. 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).
  4. Nasaďte nový cert do reverse proxy (nginx, Caddy, Traefik) a reštartujte alebo znovu načítajte (reload) proces.
  5. 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.

Spustiť monitoring →

Súvisiace

Zdieľať: Odkaz skopírovaný

Vyskúšajte ePulz.io zadarmo - na 7 dní bez potreby kreditnej karty.

Vytvoriť účet