mrpear.net logo osobní web jednoho ajťáka
► ČESKY | ENGLISH |
twitter icon twitter icon google plus icon flickr icon 500px icon linkedin icon

Jak povolit export privátního klíče z úložiště certifikátu Windows

Čas od času jsme postaveni před zdánlivě neřešitelnou situaci... Jako například přenést osobní certifikát z jednoho počítače na druhý, k čemuž potřebujeme jak veřejnou část certifikátu, tak samozřejmě i privátní klíč, ale jsme v situaci, kdy privátní klíč byl označen jako neexportovatelný. Systém nám tak zcela logicky nedovoluje soukromý klíč exportovat a tváří se, že z této situace není úniku. Je tomu opravdu skutečně tak? A jak vůbec vše kolem certifikátů funguje? O tom více v následujícím příspěvku.
Na úvod neuškodí trošku teorie o certifikátech, abychom si objasnili, proč je soukromý (privátní) klíč tak důležitý a proč ho někdy nelze snadno exportovat. Následuje pak postup, jak exportovat certifikát včetně soukromého klíče i v případě, že byl označen jako neexpostovatelný.

Certifikáty

Certifikáty se v digitálním světě využívají pro identifikaci protistrany. Veřejná část certifikátu obsahuje informace o subjektu samotném, tedy hlavně jeho identifikaci (jméno, ...), dále pak sériové číslo certifikátu, platnost certifikátu atd. Tyto informace v certifikátu obsažené jsou nezpochybnitelné díky principu důvěryhodné (certifikační) autority a přenosu důvěryhodnosti. Pokud totiž důvěřujeme samotné certifikační autoritě, můžeme díky přenosu důvěry důvěřovat i vydanému certifikátu. Každý vydaný certifikát je digitálně podepsán soukromým klíčem certifikační autority.

Proč veřejný a soukromý klíč?

Jak to tedy funguje? Jak mohu prokázat, že jsem to na druhé straně skutečně já a jak zajistím, že se za mě nemůže vydávat někdo úplně jiný? Tady nastupuje asymetrická kryptografie (šifrování) pomocí páru klíčů, rozdělených na veřejný a soukromý. Tato sada klíčů má tu vlastnost, že pokud zašifrujeme zprávu s využitím jednoho z klíčů, můžeme ji dešifrovat pouze za pomocí druhého klíče. Princip generování a vztahu klíčů je založen na matematickém problému, ke kterému neexistuje efektivní řešení. Konkrétněji, výpočetně je snadné generovat sadu dvou klíčů (soukromý a veřejný), ale následně z klíče veřejného nelze odvodit klíč soukromý. Ještě přesněji řečeno, ve skutečnosti je možné soukromý klíč odvodit, ale jedná se o tak (matematicky a výpočetně) náročnou operaci, že s dnešními znalostmi a dnešní výpočetní technikou to není možné provést v rozumně dlouhé době. Pro zájemce o hlubší studium nabízím jako dobrý start články na Wikipedii: Asymetrická kryptografie či anglické povídání Public-key cryptography.
Máme tedy soukromý klíč, který slouží k šifrování, resp. podepsání zprávy a veřejný klíč, který slouží k dešifrování, resp. ověření pravosti podpisu. Veřejný klíč je veřejný, je součástí certifikátu a může nám být jedno, kdo jej získá, nelze jej zneužít. Naopak soukromý klíč je nutné držet v tajnosti, protože ten využíváme k šifrování či digitálnímu podpisu. Pokud někdo získá náš soukromý klíč, může se snadno vydávat za nás, je to tedy stejné, jako když ztratíme klíče nebo někdo získá PIN k naší platební kartě.

Držíme soukromý klíč v bezpečí

Sada obou klíčů vzniká při vytváření žádosti o certifikát. Tato žádost se pak odesílá, ale pouze s veřejným klíčem, k certifikační autoritě, která na jejím základě vydá a podepíše certifikát. Certifikát jako takový je veřejná část, náš soukromý klíč vůbec neopustí brány našeho počítače a jeho zneužití je tedy možné pouze napadením našeho počítače a nebo tím, že jej někomu vědomě poskytneme.
Jakmile nám certifikační autorita vydá certifikát (veřejnou část), jeho instalací do počítače, ve kterém vznikla žádost, dojde ke spojení veřejné (právě vydané) části certifikátu a soukromého klíče. Pokud budeme něco podepisovat, použijeme k podpisu soukromou část (klíč) a spolu se zprávou odešleme certifikát (veřejnou část). Dle popsaných principů výše si může příjemce ověřit, že k podepsání zprávy došlo soukromým klíčem, který pasuje k veřejnému klíči a proto se dá podpisu důvěřovat.
Výše popsané principy objasňují, proč se kolem soukromého klíče dějí bezpečnostní manévry a proč existuje možnost označení privátního klíče jako neexportovatelného. Jak si ale nyní ukážeme, označení neexportovatelný je pouze příznak, který v žádném případě exportu klíče nezabrání a není to tedy v žádném případě spolehlivé zabezpečení klíče proti jeho zneužití (krádeži).

Export certifikátu s privátním klíčem

Pokud chceme certifikát používat na více počítačích, nebo jej jen potřebujeme přenést z jednoho počítače na druhý, musíme do úložiště certifikátů importovat vždy certifikát včetně soukromého klíče. Bez něj můžeme certifikát do úložiště importovat také, ale nebudeme mít možnost certifikátem podepisovat ani šifrovat.

Zobrazení a správa certifikátů

Pro zobrazení a správu certifikátů slouží konzole Správce certifikátů. Spustíme jej jednoduše zadáním následujícího názvu do dialogu Spustit:
certmgr.msc
Dialog Spustit vyvoláme klávesovou zkratkou Win+R, nebo u Windows 8 a vyšších můžeme využít Power User Menu (Win+X) a z nabídky následně zvolit Spustit.
power-menu-spustit spustit-certmgrmsc
Po spuštění se zobrazí konzole Certifikáty - aktuální uživatel, ve které nalistujeme kategorii Osobní -> Certifikáty.
certmgr-certifikaty
Zde můžeme pracovat s osobními certifikáty. Poklepáním na požadovaný záznam zobrazíme dialog s podrobnostmi certifikátu, ve kterém můžeme ověřit jeho jednotlivé vlastnosti a zároveň se ujistit, zda k certifikátu máme i privátní klíč.
certifikat-detail
Na záložce Podrobnosti můžeme stiskem tlačítka Kopírovat do souboru... zahájit Průvodce exportem certifikátu.
Přivítá nás dialog exportu certifikátu, na úvodní stránce dialogu není co řešit, proto stiskneme tlačítko Další...
certifikat-export
Na další stránce máme možnost zvolit, zda chceme spolu s certifikátem exportovat také privátní (soukromý) klíč. Ale pokud byl tento klíč označen jako neexportovatelný, resp. nebyl označen jako exportovatelný, máme smůlu, stejně jako na následujícím obrázku, kdy je aktivní pouze možnost Ne, neexportovat privátní klíč.
certifikat-export-privatni-klic
V tuto chvíli je nejvíce důležitá informace ta, že možnost exportovat soukromý klíč či nikoliv je pouze příznak, který skutečnému exportu nijak nebrání. Jen je potřeba tento příznak změnit, nejlépe dočasně, a klíč exportovat.

Jailbreak - 4.0

Dostáváme se k aplikaci, která nám umožní soukromý klíč exportovat. Jmenuje se Jailbreak, je komplet Opensource a vše potřebné nalezneme na její GitGub stránce: Zájemci si mohou díky tomu, že se jedná o aplikaci s otevřeným kódem, prohlédnout zdrojové kódy a přesvědčit se, že nebude činit s ohledem na certifikáty nic nekalého.
Princip použití aplikace je jednoduchý. Po stažení a rozbalení ZIP archivu máme k dispozici zdrojové kódy, zkompilovanou aplikaci pro různé platformy (x86 a x64) a pomocné dávkové soubory (.bat). Postupujeme tedy následovně:
  • Z uvedené adresy stáhneme Jailbreak (tlačítko Download ZIP).
  • Soubor jailbreak-master.zip rozbalíme do libovolné složky na disku.
  • Otevřeme složku jailbreak-master, což je kořenová složka rozbaleného archivu.
  • Najdeme dávkový soubor jbcert32.bat (pro x86 architekturu), resp. jbcert64 (pro x64 architekturu) a spustíme jej jako správce (nutné!).
jailbreak-x64-spustit-admin
Po spuštění dávkového souboru se provedou dvě operace:
  • Všechny klíče v úložišti budou označeny jako exportovatelné.
  • Spustí se konzole Správce certifikátů.
V právě otevřeném okně Správce certifikátů nalistujeme požadovaný certifikát a zhájíme jeho export již známým postupem. Rozdílu si pak všimneme na okně dialogu, kde máme na výběr, zda exportovat také soukromý klíč — nyní máme k dispozici možnost exportovat klíč i u klíčů dříve označených jako neexportovatelné.
certifikat-export-privatni-klic-ano
Označíme tedy možnost Ano, exportovat privátní klíč a pokračujeme průvodcem exportu certifikátu na další stránku.
certifikat-export-privatni-klic-pkcs
Ponecháme vybranou a vlastně jedinou možnost volby formátu exportu - PKCS č.12 (PFX) a případně zatrhneme volbu Zahrnout všechny certifikáty na cestě k certifikátu, pokud je to možné. To nám usnadní následný import certifikátu do počítače, který nemá instalovány nadřazené certifikáty (certifikáty certifikační autority).
certifikat-export-privatni-klic-heslo
Na další stránce jsme vyzvání k zadání hesla, které slouží k ochraně soukromého klíče a bez jehož znalosti není možné certifikát včetně klíče importovat. Zvolíme vzhledem k okolnostem vhodně silné heslo.
certifikat-export-privatni-klic-cesta
Další okno dialogu průvodce nás vyzve k zadání cesty a názvu souboru, kam se chceme export certifikátu s klíčem uložit.
certifikat-export-privatni-klic-dokonceni
Poslední krok průvodce je pak souhrn nastavení a stiskem tlačítka Dokončit proběhne samotný export.
Důležité je také to, že se jedná o dočasné označení, tedy po dokončení exportu a uzavření správce certifikátů budou příznaky opět obnoveny a přes běžný export nebude export soukromého klíče dostupný.

Import certifikátu

Pokud budeme daný certifikát importovat do úložiště, budeme v průvodci vyzvání mimo jiné také k tomu, abychom určili ochranu privátního klíče. Jedna z možností je Označit tento klíč jako exportovatelný; později bude možné klíč zálohovat či přenést.
certifikat-import-privatni-klic-exportovatelny
Jedná se o určení příznaku, o kterém tu celou dobu diskutujeme. Jeho nastavení tedy nechám na vás.

Závěr

V tomto příspěvku jsme si stručně objasnili princip fungování soukromého klíče ve vztahu k certifikátu. Ujasnili jsme si, proč je důležité privátní klíče chránit a je tedy někdy problematické je exportovat. Zároveň jsme si ale ukázali cestu, jak exportovat i klíče označené jako neexportovatelné.
Budu rád za komentáře.
Reklama

Komentáře

8. 3. 2016 21:06:04, Dan Šmíd
Bohužel, u mě to nezabralo. Zablokoval se mi přístup ke všem soukromým klíčům a ani tenhle postup nepomohl. Zatím se marně pokouším najít příčinu.
4. 10. 2016 17:55:18, Zbyněk
Ahoj,
zkusil jssem jailbreak na I.CA certifikáty uložené jako neexportovatelné a kvalifikovaný certifikát mi to umožnilo exportovat, standardní ale ne.
Díky moc za tip!
9. 11. 2016 14:48:45, UV
Prosím o radu. zvolil jsem exportovat privátní klíč ano, ale když kliknu na dokončit, zobrazí se chyba: "Export se nezdařil. Klíč není platný v zadaném stavu". Díky moc.
16. 11. 2016 21:57:11, Karel Honsig
Ahoj, super info - za mě funguje skvěle. vřelé díky. Karel

Co si o tom myslíte?

:
:
(nepovinné a neveřejné, slouží pro případ dalšího kontaktu přes e-mail)
: