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.
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
- 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 - Let's Encrypt (zdarma, 90denní platnost): typicky přes
certbot renewnebo přes panel hostingu (One-click renewal). - 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).
- Nasaďte nový cert do reverse proxy (nginx, Caddy, Traefik) a restartujte nebo znovu načtěte (reload) proces.
- 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.
Vyzkoušejte ePulz.io zdarma - 7 dní bez kreditní karty.
Vytvořit účet