Cesta: Aktuality / XCA – všestranný generátor klíčů (a nejen to)


XCA – všestranný generátor klíčů
(a nejen to)

Každý měsíc si tisíce lidí pořizují „elektronický podpis“ u certifikační autority I.CA, PostSignum nebo eIdentity (čistě pro pořádek – ve skutečnosti si pořizují „pouze“ certifikát). Pro vygenerování žádosti o certifikát používá drtivá většina žadatelů generátor klíčů poskytovaný příslušnou autoritou. Tyto programy však mají určitá omezení. Většinou jsou spustitelné jen ve Windows a třeba webový generátor PostSignum funguje pouze v Internet Exploreru (a to si ještě musíte pohrát s nastavením webového prohlížeče).

Na internetu lze ale najít další generátory klíčů, které zastanou stejnou práci. Jedním z nich je zdarma dostupný program XCA. Z webové stránky programu lze stáhnout instalační balíček pro Windows a Mac OS. Po zkompilování zdrojového kódu lze XCA používat i v Linuxu.

Jádro XCA tvoří kryptografické knihovny OpenSSL. Aplikace se ovládá pomocí uživatelského grafického rozhraní, které je rozděleno na několik samostatných záložek pro správu klíčů, žádostí o certifikát, certifikátů a seznamů zneplatněných certifikátů (CRL). Program není bohužel lokalizován do češtiny, takže se uživatel bude muset spokojit s anglickým rozhraním.

Veškerá generovaná data jsou ukládána do jediného databázového souboru, jehož jméno a umístění si určí uživatel v okamžiku vytváření souboru. Citlivá data jsou v souboru samozřejmě zašifrována za použití hesla, které se stanoví při založení databáze. Heslo lze kdykoliv změnit.

Vygenerování klíčů

Po spuštění programu je nejprve potřeba založit nový databázový soubor (položka „New DataBase“ v menu „File“), případně otevřít existující databázi. Následně vygenerujete klíče na záložce „Private Keys“. Během generování klíčů nastavujete algoritmus a velikost klíčů.

V současnosti jsou nejpoužívanější RSA klíče o velikosti 2048 bitů. XCA podporuje také algoritmy DSA a EC (eliptické křivky). Kromě výchozích velikostí klíčů 1024, 2048 a 4096 bitů lze také ručně zadat vlastní velikost klíčů. Výjimkou jsou EC klíče, u nichž se vybírá z pevně stanoveného seznamu eliptických křivek.

 

Vygenerování žádosti o certifikát

Na záložce „Certificate signing requests“ dále vygenerujete žádost o certifikát. Dialogové okno pro zadání údajů žádosti obsahuje mnoho editovacích polí pro zadání rozlišovacího jména anebo rozšíření žádosti, ale pro nejjednodušší žádost stačí na záložce „Source“ nastavit v poli „Signature algorithm“ hodnotu „SHA 256“ (tím se nastaví algoritmus podpisu žádosti) a na záložce „Subject“ doplnit do pole „countryName“ text „CZ“ a do pole „commonName“ vaše jméno a příjmení (takto se vytvoří jednoduché rozlišovací jméno vlastníka klíčů). Příklad vyplnění polí žádosti ukazuje obrázek. Po vygenerování uložíte žádost pomocí tlačítka „Export“ do souboru.

Na takto vygenerovanou žádost si můžete bez problémů nechat vydat certifikát u autority PostSignum. Program XCA byl také úspěšně použit při vydávání certifikátu u I.CA, ale v takovém případě je potřeba doplnit více údajů do žádosti o certifikát, aby se struktura žádosti co nejvíce podobala žádostem generovaným oficiálními generátory klíčů od I.CA. Např. brázek níže ukazuje, jaké údaje musí zadat žadatel o certifikát – fyzická osoba. Údaje, které jsou v obrázku na záložce „Subject“ označeny jako nepovinné, nemusí být zadávány, pokud si nepřejete umístit tyto informace do certifikátu.

Import vydaného certifikátu

Vydaný certifikát importujete do programu XCA na záložce „Certificates“ pomocí tlačítka „Import“. Posledním krokem je pak export certifikátu a klíčů do souboru ve formátu PKCS#12. Tento výsledný soubor je pak možné importovat do úložiště Windows nebo např. do Mozilly Firefox a začít používat certifikát a korespondující klíče.

Do souboru PKCS#12 je možné uložit také celou certifikační cestu od uživatelského certifikátu až po certifikát kořenové certifikační autority. Stačí při exportu vybrat formát „PKCS #12 with Certificate chain“. Do databáze je ale samozřejmě potřeba importovat také certifikát(y) certifikační autority, která certifikát vydala.

Ztracená žádost o certifikát

Představte si situaci, kdy si chcete zajít na certifikační autoritu pro certifikát, ale nešťastnou náhodou si smažete soubor se žádostí o certifikát. Většina generátorů klíčů poskytovaných českými autoritami vám v tomto případě nepomůže a budete si muset vygenerovat nové klíče se žádostí.

XCA má ale uloženy vytvořené žádosti v databázi, takže jednoduše stačí znovu provést export příslušné žádosti do souboru. Nic není ztraceno ani v případě, že si žádost smažete z databáze. Jednak můžete vyzkoušet možnost „Undelete items“ v menu „File“ a obnovit smazaná data, nebo vygenerujete novou žádost na základě existujících klíčů. V dialogovém okně pro vytvoření žádosti si totiž na záložce „Subject“ vybíráte klíčový pár, pro který bude žádost vygenerována. Pokud nejsou klíče na seznamu zobrazeny, je potřeba zaškrtnout políčko „Used keys too“.

Podpora čipových karet a USB tokenů

XCA však neumí generovat pouze softwarové klíče, které jsou uloženy v počítači, ale podporuje také generování klíčů na čipovou kartu nebo do USB tokenu. A to i pod Linuxem!

K tomu je ovšem potřeba mít nainstalovaný software (tzv. middleware) dodávaný k danému hardwarovému prostředku. Je důležité, aby tento software poskytoval tzv. PKCS#11 knihovnu, která se zaregistruje do XCA (v menu „File“ se vybere položka „Options“ a následně se v sekci „PKCS#11 provider“ přidá příslušný DLL resp. SO soubor stisknutím tlačítka „Add“).

Ve Windows funguje XCA zaručeně s balíčkem Bezpečný klíč s USB tokenem iKey 4000, jenž prodává autorita PostSignum. Vyzkoušen byl úspěšně také USB token Aladdin eToken Pro s middlewarem eToken PKI Client 5.1 SP1. Pod Linuxem (konkrétně v distribuci OpenSUSE 10.3) bylo XCA úspěšně otestováno s tokenem Aladdin a softwarem eToken PKI Client 5.00.28-0.

Generování klíčů do hardwaru probíhá v XCA stejným postupem jako generování softwarových klíčů. Pouze v poli „Keyset“ pro výběr algoritmu klíčů vyberete položku reprezentující čipovou kartu či token. Dialogové okno pro vygenerování klíčů do hardwaru je na obrázku.

Vydaný certifikát musíte nejprve importovat do XCA stejně jako u softwarových klíčů. Následně provedete export certifikátu do hardwarového zařízení – místo stisknutí tlačítka „Export“ kliknete na certifikát pravým tlačítkem myši a vyberete „Export – Security token“.

V menu „Token“ se nacházejí operace pro práci s čipovou kartou či tokenem. Lze inicializovat zařízení, měnit PIN nebo spravovat klíče a certifikáty uložené v zařízení.

Vytvoření certifikační autority? V XCA to je snadné

Zajímavou funkcí programu XCA je možnost vytvořit si vlastní certifikační autoritu, pomocí které lze vydávat certifikáty na základě importovaných žádostí, zneplatňovat (revokovat) je a vydávat tzv. CRL (seznamy zneplatněných certifikátů). XCA umožňuje vytvořit i víceúrovňovou certifikační autoritu tvořenou kořenovou a podřízenou autoritou, jako je tomu u PostSignum.

Takto vytvořená certifikační autorita se může použít pro otestování aplikací, které používají klíče a certifikáty pro šifrování nebo podepisování dat či autentizaci uživatelů. Uplatnění tedy může nalézt u vývojářů těchto aplikací, ale i u podnikových informatiků, kteří si chtějí otestovat své IT systémy před nákupem zaměstnaneckých certifikátů u externí autority.

Vytvoření certifikační autority v XCA je přitom mnohem jednodušší než v případě OpenSSL nebo Microsoft CA. Nejprve vygenerujete klíče certifikační autority na záložce „Private Keys“, následně na záložce „Certificates“ rovnou vytvoříte certifikát autority. Určíte si dobu platnosti certifikátu a uložíte do něj podle potřeby další rozšiřující informace, jako je adresa pro stažení CRL souboru, adresa pro stažení certifikátu autority, omezení použití klíčů, identifikátory klíčů, apod.

Vydáváme certifikáty...

Jak taková certifikační autorita, vytvořená v XCA, vydává certifikáty? Vše začíná importem souboru se žádostí o certifikát na záložce „Certificate signing request“. Na načtenou žádost kliknete pravým tlačítkem myši a vyberete položku „Sign“. Zobrazí se dialogové okno, pomocí nějž definujete strukturu údajů vydávaného certifikátu.

Na záložce „Source“ je nejdůležitější volba „Use this Certificate for signing“. Tou vybíráte certifikát autority, jejímž soukromým klíčem bude certifikát podepsán. To je důležité zejména v případě, že máte v databázovém souboru vytvořeno více autorit.

Na autoritě vytvořené v XCA je cenné zejména to, že umožňuje vytvořit certifikát s jinými údaji, než které jsou uvedeny v žádosti o certifikát. Lze tak při vydávání certifikátu snadno opravit případné chyby v žádosti místo toho, aby žadatel musel generovat žádost novou. Funkcionalitu „editace“ certifikátu aktivujete zaškrtnutím položky „Modify subject of the request“ a naopak odškrtnutím položky „Copy extensions from the request“ na záložce „Source“.

Rozlišovací jméno vlastníka certifikátu pak editujete na záložce „Subject“ (editovací pole jsou přitom předvyplněna údaji ze žádosti). Rozšíření certifikátu definujete na záložce „Extensions“. Po vytvoření certifikátu jej na záložce „Certificates“ exportujete do souboru a předáte žadateli, který si jej nainstaluje ke svým klíčům.

Příklad vyplnění editovacích polí na jednotlivých záložkách okna pro vytvoření certifikátu si můžete prohlédnout na obrázku níže.

A také je zneplatňujeme

Zneplatnění certifikátu se provádí na záložce „Certificates“. Na vybraný certifikát kliknete pravým tlačítkem myši a vyberete volbu „Revoke“. V dialogovém okně specifikujete datum a důvod zneplatnění. Zneplatněným certifikátům lze obnovit platnost pomocí volby „Unrevoke“.

Funkce pro vygenerování CRL se rovněž nachází na záložce „Certificates“. Tentokrát ovšem musíte kliknout pravým tlačítkem myši na certifikát certifikační autority a vybrat „CA – Generate CRL“. V dialogovém okně nastavíte dobu platnosti CRL, algoritmus podpisu a rozšíření CRL. Vytvořené CRL naleznete na záložce „Revocation lists“, odkud je možné je exportovat do souboru a např. publikovat na určitou webovou adresu (zejména pokud v certifikátech používáte rozšíření „CRL Distribution Point“).

 

XCA – užitečný pomocník

Pokud často pracujete s klíči a certifikáty nebo používáte, vyvíjíte či testujete aplikace s kryptografickými funkcemi, rozhodně vyzkoušejte program XCA. Kromě generování klíčů a žádostí o certifikát vás může zaujmout možnost vytvoření vlastní testovací certifikační autority včetně zneplatňování certifikátů a generování CRL.

(Autorem článku je Ing. Martin Šlancar, Technology Consultant, NEWPS.CZ s.r.o., obchodní partner společnosti Novell)