#language cs ## 20230703 AK ---- '''česky''' | [[Certificates|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 [[https://www.cacert.org|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 [[FAQ/CSR/CZ|CSR]] a [[FAQ/SubmitCsr/CZ|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: * '''.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. * '''.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 [[HowTo/CZ|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: 1. Ověření, že certifikát serveru pochází od důvěryhodné CA (upozornění, když ne). 1. 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í. 1. 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. ## Šifrované spojení s webovým serverem protokolem HTTPS (standardně na portu 443) je umožněno použitím dvou dvojic klíčů používaných jen po dobu spojení. S webovým serverem komunikuje klientský program - webový prohlížeč. K utajení, jak už víme, je třeba zašifrovat odesílanou zprávu veřejným klíčem adresáta, který si ji pak dešifruje svým privátním klíčem. Aby to mohlo i zde fungovat, musí si každá strana, klient i server, vygenerovat dvojici klíčů a veřejné klíče si pak vzájemně sdělit (vyměnit). Slouží k tomu algoritmus Diffie-Hellman (podle jmen autorů). Obě strany si pak vyměňují zašifrované zprávy, které může úspěšně dešifrovat pouze jejich příjemce svým privátním klíčem. Certifikát serveru slouží k inzerci jeho důvěryhodnosti. === 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 ([[https://tools.ietf.org/html/rfc5246|RFC 5246]]) nebo TLS 1.3 ([[https://tools.ietf.org/html/rfc8446|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 == * [[FAQ/TechnicalQuestions/CZ#Kořenové_certifikáty|Kořenové certifikáty]] * [[Technology/KnowledgeBase/ClientCerts/CZ|Klientské certifikáty]] * [[EmailCertificates/CZ|E-mailové certifikáty]] * [[FAQ/ServerCerts/CZ|Serverové certifikáty]] * Ostatní * [[GovernmentalCertificates/CZ|Vládní certifikáty]] * [[WildcardCertificates/CZ|Skupinové certifikáty]] * [[FAQ/CSR/CZ|Žádost o podpis certifikátu]] (Certificate Signing Request, CSR) - též žádost o certifikát * [[FAQ/SubmitCsr/CZ|Předložení žádosti o podpis certifikátu (CSR)]] * [[FAQ/subjectAltName/CZ|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 [[FAQ/AssuranceIntroduction/CZ|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: . [[FAQ/Privileges/CZ|Kolik bodů potřebuji pro... (privilegia)]] == 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 ([[FAQ/AssuranceIntroduction/CZ|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. {{{#!wiki note 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í. [[HowTo/ReplaceCAcertRootCertificate/CZ|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: . [[FAQ/Class3Resign/CZ|Zprostředkující certifikáty třídy 3]] 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: . [[CPS/CZ|Přehled postupů certifikace]] (Certification Practise Statement, CPS) ---- . CategoryCommunity . CategoryConfiguration . CategoryGuide . CategorySoftware . CategorySupport