Zkratka proSecure Sockets Layeres-es-el certifikátTakéTLS certifikát, SSL/TLS certifikát, serverový certifikát, X.509 certifikátZákladní

Definice

SSL certifikát je digitálně podepsaný datový soubor ve formátu X.509, který svazuje doménové jméno s veřejným klíčem serveru a potvrzuje jeho pravost. Prohlížeč díky němu ověří, že komunikuje se správným webem, a naváže šifrované spojení TLS. Certifikát vydává certifikační autorita po ověření kontroly nad doménou.

Kategorie: KyberbezpečnostAktualizováno

Než se na to spolehnete: Maximální platnost veřejně důvěryhodných certifikátů se podle rozhodnutí CA/Browser Fora postupně zkracuje, proto je v textu uvedena obecně ("v řádu měsíců") bez konkrétního čísla dní. Wikidata Q141090 odpovídá pojmu "public key certificate", ale doporučuji ověřit.

Co certifikát ve skutečnosti dokazuje

SSL certifikát nešifruje sám o sobě nic. Certifikát je veřejné prohlášení certifikační autority (CA) o tom, že veřejný klíč uvnitř souboru patří držiteli konkrétní domény. Šifrování zajišťuje protokol TLS; certifikát jen řeší otázku, se kterým protějškem se klíče vlastně dohadují. Bez něj by šlo spojení zašifrovat stejně dobře s útočníkem uprostřed cesty.

Certifikát obsahuje doménová jména (pole SAN), veřejný klíč, dobu platnosti, identifikaci vydavatele a podpis CA. Prohlížeč tento podpis ověří proti kořenovým certifikátům ve svém úložišti důvěry, a to případně přes několik mezilehlých certifikátů. Této posloupnosti se říká řetězec důvěry a server ji musí poslat celou, jinak část klientů spojení odmítne.

Průběh ověření při připojení

Při TLS handshake pošle server certifikát spolu s mezilehlými certifikáty. Klient zkontroluje podpisy v řetězci, platnost dat, shodu jména hostitele s poli SAN a stav odvolání. Následně server prokáže, že drží odpovídající privátní klíč: podepíše část výměny, kterou nikdo bez klíče podepsat neumí. Teprve pak vzniká relační klíč a začíná chráněný přenos, tedy HTTPS.

Typy podle rozsahu ověření

Podle úrovně prověření žadatele

DV (Domain Validation) potvrzuje pouze kontrolu nad doménou a vydá se během minut. OV (Organization Validation) navíc ověřuje existenci firmy v rejstříku. EV (Extended Validation) přidává nejpřísnější prověrku; prohlížeče ji ale už nezobrazují nijak výrazně, takže její marketingový přínos výrazně klesl.

Podle pokrytí domén

Jednodoménový certifikát kryje jeden název, wildcard kryje všechny subdomény jedné úrovně (*.webzi.cz) a multidoménový (SAN/UCC) sdružuje nesouvisející jména do jednoho souboru. Wildcard nepokrývá kořenovou doménu automaticky ani vnořené subdomény druhé úrovně.

Životnost a automatizace

Platnost veřejně důvěryhodných certifikátů se dlouhodobě zkracuje a dnes se pohybuje v řádu měsíců, ne let. Ruční obnova se proto nevyplácí: standardem je protokol ACME a klient typu Certbot, který vystaví i nasadí nový certifikát bez zásahu člověka. Expirovaný certifikát je jedna z nejčastějších příčin plošných výpadků služeb.

Vlastní (self-signed) certifikát si vygeneruje kdokoli. Pro interní testování stačí, na veřejném webu ale vyvolá varovnou obrazovku, protože jej nikdo nepodepsal důvěryhodnou autoritou. Vydání každého veřejného certifikátu se navíc zapisuje do veřejných logů Certificate Transparency, kde lze sledovat, kdo si na vaši doménu certifikát nechal vystavit.

Kde se to nejčastěji rozbije

Chybějící mezilehlý certifikát projde v prohlížeči na desktopu, ale selže v mobilní aplikaci nebo při volání z curl. Podobně nepomůže sebelepší šifrování, když certifikát zní na jiné jméno, než na které klient přistupuje: chyba nese označení nesouladu hostitele a spojení se ukončí.

Příklady z praxe

  1. Kontrola certifikátu z příkazové řádky

    Před nasazením se hodí ověřit, jaký řetězec server skutečně posílá. OpenSSL vypíše subjekt, vydavatele a platnost, takže se okamžitě pozná chybějící mezilehlý certifikát nebo špatnou doménu. Stejný příkaz slouží i k rychlé kontrole po obnově.

    openssl s_client -connect webzi.cz:443 -servername webzi.cz < /dev/null \
      | openssl x509 -noout -subject -issuer -dates
  2. Wildcard nepokryl to, co se čekalo

    E-shop má certifikát pro *.example.com a vše funguje na www.example.com i api.example.com. Po spuštění testovacího prostředí na adrese beta.api.example.com začnou klienti hlásit chybu důvěry, protože wildcard platí jen pro jednu úroveň subdomén. Řešením je druhý wildcard pro *.api.example.com nebo přidání konkrétního jména do pole SAN.

Časté omyly

MýtusMáme SSL certifikát, takže je web bezpečný.
Ve skutečnostiSSL certifikát chrání pouze přenos mezi prohlížečem a serverem a potvrzuje identitu domény. Nijak neřeší SQL injection, slabá hesla, zranitelné knihovny ani phishing: certifikát si na svou doménu bez problémů vystaví i podvodník.
MýtusSSL a TLS jsou dvě různé věci a my používáme SSL.
Ve skutečnostiProtokol SSL je zastaralý a všechny jeho verze byly zavrženy; dnes se reálně používá výhradně TLS. Označení SSL certifikát přetrvalo jen jako zažitý název, technicky jde o certifikát X.509 používaný v TLS.
MýtusDražší certifikát znamená silnější šifrování.
Ve skutečnostiSílu šifrování určuje domluvená sada algoritmů a délka klíče, ne cena certifikátu. Bezplatný DV certifikát od Let's Encrypt poskytuje stejně silné spojení jako drahý EV; liší se jen rozsah ověření žadatele a doprovodné služby.

Časté dotazy

Co se stane, když SSL certifikát vyprší?
Vypršelý SSL certifikát způsobí, že prohlížeč zobrazí celostránkové varování o nedůvěryhodném spojení a běžný návštěvník dál nepokračuje. Automatizovaní klienti, mobilní aplikace a serverová volání API spojení rovnou odmítnou, takže výpadek se často projeví dřív na integracích než na webu. Web zůstává technicky funkční, ale prakticky nedostupný. Prevencí je automatická obnova protokolem ACME a nezávislý monitoring, který hlídá datum expirace a upozorní několik týdnů předem, ne až v den vypršení.
Stačí bezplatný certifikát od Let's Encrypt pro e-shop?
Bezplatný DV certifikát od Let's Encrypt poskytuje e-shopu stejně silné šifrování i stejnou důvěru prohlížečů jako placená varianta. Rozdíl je v úrovni ověření: DV potvrzuje jen kontrolu nad doménou, zatímco OV a EV prověřují i existenci firmy. Placené certifikáty navíc nabízejí smluvní podporu a finanční záruku, kterou některé korporátní nebo bankovní požadavky vyžadují. Pro naprostou většinu e-shopů je bezplatný certifikát s automatickou obnovou plně dostačující volbou.
Jak zjistím, jaký certifikát můj server posílá?
Nejrychlejší kontrolou je kliknutí na ikonu zámku v prohlížeči, kde se zobrazí vydavatel, doména a platnost. Přesnější obraz dá příkaz openssl s_client s parametrem -servername, protože ukáže celý řetězec včetně mezilehlých certifikátů tak, jak jej server skutečně odesílá. To je důležité proto, že prohlížeče chybějící mezičlánek často doplní z vlastní mezipaměti, zatímco jiní klienti spojení odmítnou. Doplňkově pomáhají online testovací služby, které prověří i podporované verze TLS.
Potřebuje každá subdoména vlastní SSL certifikát?
Každá subdoména musí být pokrytá certifikátem, ale nemusí jít o samostatný soubor. Wildcard certifikát pro *.example.com pokryje libovolný počet subdomén jedné úrovně, zatímco multidoménový certifikát sdruží konkrétní jména do pole SAN. Pozor na dvě omezení: wildcard nepokrývá samotnou kořenovou doménu example.com ani zanořené názvy typu beta.api.example.com. Z bezpečnostního hlediska má sdílený wildcard nevýhodu v tom, že jeden privátní klíč se kopíruje na více serverů.

Zdroje

  1. The Transport Layer Security (TLS) Protocol Version 1.3(otevře se v novém okně)IETF / RFC Editor, 2018
  2. Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile(otevře se v novém okně)IETF / RFC Editor, 2008
  3. Automatic Certificate Management Environment (ACME)(otevře se v novém okně)IETF / RFC Editor, 2019
  4. Transport Layer Security (TLS)(otevře se v novém okně)MDN Web Docs
  5. Transport Layer Security Cheat Sheet(otevře se v novém okně)OWASP

Související pojmy

Potřebujete to vyřešit v praxi?

Poradíme, jak na to ve vašem projektu

Vysvětlit pojem je jedna věc, navrhnout kolem něj funkční řešení druhá. Ozvěte se a probereme, co dává smysl u vás.