česky | english
Certifikáty (přehled)
Certifikát (potvrzení, osvědčení) je dokument, který v podstatě říká toto:
"My, certifikační autorita (CA), jsme ověřili a potvrzujeme, že předmět "CommonName" je skutečně tím, za nějž se prohlašuje. Toto potvrzení platí od (datum) do (datum)."
K certifikátu patří:
- dvojice kryptografických klíčů (z nichž jeden, veřejný, je v certifikátu uveden), která zajišťuje, že uvedené tvrzení není zfalšováno;
- některé údaje o předmětu certifikátu (jaké, to záleží na účelu certifikátu);
- kryptografický otisk ("otisk prstu") k rychlému ověření pravosti certifikátu;
- pořadové číslo certifikátu, jedinečné v rámci vydávající certifikační autority;
- seznam (CRL), udržovaný u vydavatele certifikátu (certifikační autority), kde můžete zjistit, zda certifikát stále platí (zda potvrzení nebylo odvoláno).
Obsah certifikátu může být v počítači uložen jako data v databázi (například v Registru Windows) nebo jako samostatný soubor.
Jak si pořídit osobní (klientský) certifikát
Na počítači (nejlépe na svém osobním) si vygenerujete žádost o certifikát a privátní klíč.
Podle účelu lze privátním klíčem určitá data zašifrovat a veřejným dešifrovat, nebo naopak. Privátní klíč by však měl za všech okolností zůstat tam, kde byl vygenerován.
K vygenerování lze použít různé kryptografické programy nebo některé webové prohlížeče. Nejpohodlnější postup je právě použití prohlížeče, kdy certifikát získáte a většinou i nainstalujete při jediné návštěvě webu certifikační autority (například Webu důvěry CAcert). V současné době však autoři nejznámějším prohlížečům (Firefox, Chrome, IE, Edge, Opera, Safari, Maxthon) tuto schopnost, údajně z bezpečnostních důvodů, odebrali.
- Kromě prohlížečů existují i další kryptografické programy, s grafickým i řádkovým rozhraním, které mohou privátní klíč a žádost o certifikát vygenerovat. Soubor žádosti o certifikát (CSR) musíte však jeho obsah upravit do textové podoby Base64 a předložit certifikační autoritě (například na uvedeném Webu důvěry CAcert) manuálně.
Více o žádosti o certifikát najdete v článcích CSR a Generování žádosti o certifikát pomocí OpenSSL.
Soubory vygenerované kryptografickým programem z příkazového řádku (např. openssl)
Použijete-li řádkový příkaz pro program openSSL nebo podobný a zadáte si název vzniklého produktu, zpravidla dostanete tyto dva nejdůležitější soubory:
<název>.key
Toto je Váš privátní čili soukromý klíč. Tento klíč byste měli mít pouze VY, a to na počítači, kde a pro který byl vytvořen. (Výjimkou je záloha klíče a certifikátu, viz dále.) Tento soubor ani obsažený klíč nepotřebuje ani nevyžaduje žádná certifikační autorita! Posílat ho v e-mailu do CA je totéž, jako posílat někomu PIN své platební karty.<název>.csr
Toto je žádost o certifikát a obsahuje Váš právě vygenerovaný veřejný klíč. Tento soubor je třeba převést do předepsané znakové formy (PEM) a pak předložit CA. To u CAcert znamená zapsat jej na stránku webu CAcert, z níž po doplnění dalších údajů, které požadujete (e-mailová adresa, Vaše jméno, schopnost podepisovat dokumenty a/nebo soubory) vytvoří CAcert Váš nový certifikát a nabídne Vám ho ke stažení.
Poznámka 1: Přípony souborů .key a .csr jsou jen orientační - jiné programy generující žádosti o certifikát mohou používat jiné přípony!
Poznámka 2: Soubor žádosti o certifikát může být vytvořen ve tvaru (a s příponou) P10. Pak je jeho obsah binární a je třeba převést ho do znakového (Base64) formátu PEM.
Jak upravíte binární žádost o certifikát do tvaru vhodného pro předložení k podpisu na webu CAcert
Použijte některý web umožňující přečíst binární soubor a zakódovat ho do tvaru Base64. Například https://base64.guru/converter/encode/file. Na začátek a na konec získaného souboru přidejte identifikační řádky BEGIN a END dle výpisu příkladu:
-----BEGIN NEW CERTIFICATE REQUEST----- MIIEHzCCAwcCAQAwVzELMAkGA1UECwwCSVQxDjAMBgNVBAoMBUFMS0FTMRIwEAYD VQQHDAlTb2tvbG5pY2UxCzAJBgNVBAYTAkNaMRcwFQYDVQQDDA5tYWlsLmFsa2Fz ... ... další řádky žádosti o certifikát, zakódované do tvaru Base64 ... 6UMLNsXu8F7ZEU+LP1oyiWSBAO/LqLuqMlc5KvRRyVENJMpPlNYJdL2YRcLTzF9+ F6CC -----END NEW CERTIFICATE REQUEST-----
Jak zazálohujete certifikát s privátním klíčem
Prostředky k zálohování mohou být:
- program příkazového řádku (jako openSSL),
- program operačního systému (jako MMC),
- jiné kryptografické programy jako XCA),
- prohlížeče obsahující manažer certifikátů (Firefox, Chrome,...)
Podrobný popis najdete v článcích Jak na to. Export (záloha) vytvoří soubor formátu P12 s příponou .p12 nebo .pfx s hlavními částmi:
- certifikát,
- k němu příslušný privátní klíč.
Je tedy nutno zálohovat na počítači, který obsahuje privátní klíč, tj. kde byla vygenerována žádost o certifikát, nebo kam byl certifikát a privátní klíč obnoven ze zálohového souboru (s příponou .p12 či .pfx).
Jak funguje zabezpečený přenos
Použití certifikátu k šifrování zpráv e-mailu
Kdo chce někomu poslat zprávu zašifrovanou tak, aby ji nikdo nepovolaný po cestě Internetem nedokázal dešifrovat, musí ji zašifrovat veřejným klíčem adresáta. Ten je obsažen v certifikátu adresáta. Protože RSA je nesymetrické šifrování, může zprávu dešifrovat pouze ten, kdo má odpovídající privátní klíč, a to by měl být pouze adresát.
Použití certifikátu jako důkazu
Kdo chce adresátovi/uživateli poskytnout možnost ověření, že zpráva/kód/dokument skutečně pochází od něj a nebyl(a) cestou měněn(a), musí k ní/němu připojit digitální podpis a svůj certifikát (který obsahuje veřejný klíč). Digitální podpis vznikne na straně odesilatele vytvořením haše zprávy a jeho zašifrováním pomocí privátního klíče odesilatele. Kontrola veřejným klíčem odesilatele na místě určení (u adresáta) pak obě ověření zajistí - vytvoří stejným algoritmem nový haš, dešifruje digitální podpis (vznikne haš odesilatele) a oba haše porovná.
V obou příkladech vykonávají "otročinu" s hašováním, zašifrováním a dešifrováním programy v počítačích. Hašovací algoritmus musí být velmi přesný, aby produkoval nepředvídatelné hodnoty haší. Dosahuje se toho především používáním kvalitních generátorů náhodných čísel (Random Number Generators, RNG).
Použití certifikátů při zabezpečené webové komunikaci
Základní typ spojení HTTPS (HTTP nad SSL/TLS, "S" zastupuje slovo "secured" [zabezpečený]) je výměna šifrovaných zpráv typu dotaz (GET/POST) - odpověď mezi klientem (prohlížečem) a webovým serverem. Probíhá přibližně takto:
- Ověření, že certifikát serveru pochází od důvěryhodné CA (upozornění, když ne).
- Generování páru klíčů na straně klienta i serveru a výměna veřejných klíčů. V dalším odstavci se klíči serveru i klienta rozumějí právě tyto klíče vygenerované jen pro toto spojení.
- Zašifrovaný dotaz klienta (veřejným klíčem serveru); server ho dešifruje svým privátním klíčem. Následuje zašifrovaná odpověď serveru (v jedné, případně více částech, zašifrovaných veřejným klíčem klienta), kterou klient dešifruje svým privátním klíčem.
V případě delší komunikace mohou obě strany vyvolat "změnu šifry", tj. vytvořit nový pár klíčů a veřejné klíče si opět poslat. Protože výměna zpráv je již oboustranně šifrovaná, dá se to zařídit snáze, než při zahájení komunikace.
Také zde vykonávají "otrockou práci" počítačové programy - klient (prohlížeč) a server.
Použití certifikátů při zabezpečené e-mailové komunikaci (TLS)
Spojení probíhá obvykle na portu 25 po ověření, že obě strany ovládají protokol TLS - dnes obvykle TLS 1.2 (RFC 5246) nebo TLS 1.3 (RFC 8446) a je zahájeno odesílající stranou příkazem STARTTLS.
V protokolu TLS 1.2 je patrná snaha, aby se šifrované spojení uplatnilo, i když některá strana přenosu nemá certifikát vydaný CA známou druhé straně - stačí, že k certifikátu vlastní také privátní klíč. Spojení lze dokonce šifrovat i v případě, že certifikát klienta neexistuje vůbec.
Postup je obdobný jako u zabezpečené webové komunikace: generování a výměna šifrovacích klíčů jen pro konkrétní spojení, pak výměna šifrovaných zpráv s možností změny klíčů v průběhu spojení.
Spojení protokolem TLS 1.3 je vylepšeno mj. tím, že může být zkráceno, pokud si serverová strana pamatuje stranu klientskou.
Druhy certifikátů X.509
- Ostatní
Žádost o podpis certifikátu (Certificate Signing Request, CSR) - též žádost o certifikát
Alternativní název předmětu (subjectAltName, SAN)
Jak mocné certifikáty X.509 mohu od CAcert získat?
Protože bezpečnost je vážná věc, jsou schopnosti a možnosti certifikátů, které můžete od CAcert získat, odstupňovány podle toho, jaká je Vaše úroveň důvěryhodnosti, měřená počtem bodů zaručení (AP). Tyto body získáváte tím, že se dáváte zaručit, tj. potvrzujete svou totožnost svými osobními doklady předloženými zaručovatelům CAcert. Podle počtu získaných AP máte možnosti shrnuté v článku:
Jak důvěryhodná je samotná certifikační autorita CAcert?
Důvěryhodnost CAcert je dána způsobem, jakým ověřuje žadatele o certifikáty (zaručování) a jak dobře zabezpečuje privátní klíče svých kořenových certifikátů před zneužitím. V současnosti (2016) se používají dva kořenové certifikáty CAcert:
kořenový certifikát CAcert třídy 1 (class 1 root)
je základní certifikát nejvyšší úrovně. Jako takový musí být podepsán sám sebou. K jeho podpisu je použit algoritmus MD5, který již dnes není považován za bezpečný, a proto před ním některé prohlížeče varují. Avšak vyjádření důvěry k autoritě CAcert znamená, že důvěřujete jejímu veřejnému a privátnímu klíči (veřejný klíč je součástí kořenového certifikátu CAcert), takže zde není algoritmus podpisu samotného kořenového certifikátu vůbec důležitý. Jinak je tomu u všech následných certifikátů včetně těch vydaných pro Vás. Zde všude se již používá algoritmus SHA-256, dnes všeobecně uznávaný za bezpečný.
Tímto certifikátem může být podepsán jakýkoli vydaný certifikát.
AVŠAK: od 20170101 vyžadují nové verze hlavních prohlížečů (IE, Edge, Firefox, Chrome, Opera a další), aby VŠECHNY certifikáty byly podepsány s použitím algoritmu SHA-256, tedy i kořenové certifikáty CA. Tato SHA-256 podepsaná varianta kořenového certifikátu CAcert je publikována na stránce kořenových certifikátů zde: https://www.cacert.org/index.php?id=3- Je tedy nutno nahradit jí původní kořenový certifikát podepsaný algoritmem MD-5. Přitom ostatní údaje a zejména veřejný klíč kořenového certifikátu CAcert se nemění. Postup náhrady je popsán zde.
zprostředkující certifikát třídy 3 (intermediate class 3 root)
je podpisující certifikát druhé úrovně, sám podepsaný kořenovým certifikátem třídy 1. Kontrolní haš je vytvořen algoritmem SHA-256.
Tímto certifikátem může být podepsán jakýkoli certifikát vydaný členům majícím alespoň 50 bodů zaručení (AP).
Podrobnosti složení dvojice kořenových certifikátů CAcert jsou uvedeny v tomto článku:
Privátní klíče obou kořenových certifikátů má CAcert uloženy tak, že jsou z Internetu nedostupné.
Technické podrobnosti o vydávaných certifikátech najdete v zásadách odkazovaných z článku:
Přehled postupů certifikace (Certification Practise Statement, CPS)