Zpět na blog

SSL certifikát expiroval - co dělat

· 6 min čtení

Expirovaný SSL certifikát blokuje přístup hláškou o nezabezpečeném spojení a konverze padá na nulu. Co dělat hned a jak tomu předejít.

SSL certifikát expiroval - co dělat

Co vidí návštěvník

Expirovaný certifikát spustí v prohlížeči celoobrazovkové varování:

  • 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"

Běžný návštěvník klikne "Zpět". Drtivá většina návštěvníků při takovém varování stránku opustí. Crawleři vyhledávačů (Googlebot, Bingbot) přestanou indexovat a po několika dnech začnete ztrácet pozice ve vyhledávání.

Postup, pokud právě teď expiroval

  1. Zjistěte, kdo certifikát vystavil. V terminálu: openssl s_client -connect mywebsite.com:443 -servername mywebsite.com < /dev/null 2>/dev/null | openssl x509 -noout -issuer -dates
  2. Let's Encrypt (zdarma, 90denní platnost): typicky přes certbot renew nebo přes panel hostingu (One-click renewal).
  3. Komerční cert (DigiCert, Sectigo, GlobalSign): přihlaste se do admin panelu vydavatele, vygenerujte nový CSR a projděte validací domény (DNS TXT záznam nebo email).
  4. Nasaďte nový cert do reverse proxy (nginx, Caddy, Traefik) a restartujte nebo znovu načtěte (reload) proces.
  5. Ověřte přes SSL Labs nebo přes náš SSL check nástroj, zda se cert správně servíruje a certifikační řetězec je kompletní.

Pozor: Nezapomeňte ani na intermediate cert - bez něj sice moderní prohlížeče mohou řetězec dotáhnout přes AIA, ale starší klienti a některé API knihovny budou selhávat.

Automatický renewal: Let's Encrypt + certbot

Nejjednodušší prevence je úplně automatizovat obnovu. Let's Encrypt cert se obnovuje každých 90 dní přes certbot:

# /etc/cron.d/certbot-renew
0 3 * * * root certbot renew --quiet --deploy-hook "systemctl reload nginx"

Tento cron běží denně ve 3:00 ráno. Certbot interně kontroluje, zda se cert blíží k expiraci (když zbývá méně než třetina jeho životnosti, což pro 90denní Let's Encrypt cert vychází přibližně na 30 dní před koncem). Pokud ano, obnoví ho a po úspěchu znovu načte nginx. Jinak nedělá nic.

Caddy a Traefik: úplně automaticky

Pokud používáte Caddy nebo Traefik jako reverse proxy, ACME challenge je zabudovaná přímo v binárce. Stačí v configu označit doménu a server si cert vyžádá i obnoví sám:

# Caddyfile
mywebsite.com {
  reverse_proxy localhost:3000
}

Žádný certbot, žádný cron. Caddy si na pozadí volá Let's Encrypt API a spravuje celý cyklus obnovy.

Komerční certy: 1-3letá platnost

Od září 2020 mají všechny veřejně důvěryhodné certy maximální životnost 398 dní (CA/B Forum baseline). Některé firmy přesto stále upřednostňují komerční CA, a to z těchto důvodů:

  • Extended Validation (EV) zobrazuje organizaci v adresním řádku (Chrome ji však už od roku 2019 nezobrazuje prominentně).
  • Wildcard pro mnoho subdomén i když Let's Encrypt už wildcards podporuje přes DNS-01.
  • Warranty finanční odpovědnost CA při compromise.
  • Compliance / audit některá odvětví mají externí požadavky.

Pro většinu webů stačí Let's Encrypt nebo jiná zdarma CA (ZeroSSL, Buypass).

Monitoring expirace jako záchranná síť

I když máte automatický renewal, monitoring expirace funguje jako pojistka. Renewal totiž může selhat z více důvodů:

  • rate limit ze strany CA (Let's Encrypt: 5 duplikátů / 7 dní)
  • změna DNS, která rozbije ACME challenge
  • firewall pravidlo blokující port 80 (HTTP-01 challenge)
  • pád procesu certbot nebo cronu, který nikdo nezaregistroval

ePulz.io sleduje expiry každého kontrolovaného endpointu a posílá alert 30, 14, 7, 3 a 1 den před koncem platnosti. Stačí jeden zelený signál, že se cert stihl obnovit - a vy máte jistotu, že automatika funguje.

Aktivujte SSL monitoring

Alerty 30, 14, 7, 3 a 1 den před expirací. Bez konfigurace, bez DNS změn. 7 dní zdarma.

Spustit monitoring →

Sdílet: Odkaz zkopírován

Vyzkoušejte ePulz.io zdarma - 7 dní bez kreditní karty.

Vytvořit účet