Základy práce s OpenSSL - privátní klíč a CSR

18. 4. 2016 | Jindřich Zechmeister

V první části našeho miniseriálu si ukážeme, jak s OpenSSL vygenerovat privátní klíč a CSR request pro SSL certifikát. Jedná se o jednu z nejčastějších činností a pokud žádáte o SSL certifikát, bude se vám postup hodit.

Seznámení s OpenSSL

OpenSSL je mocný nástroj pro práci s certifikáty a open source implementace protokolů SSL/TLS. Poskytuje kryptografické knihovny, jejichž funkce využívají webové servery a jiné programy pracující s šifrováním. Nenechte se překvapit či odradit tím, že program nemá grafické rozhraní. Při práci s ním zjistíte, že je to naopak výhoda.

Instalace OpenSSL a konfigurace

Program OpenSSL je většinou již zahrnut v instalaci unixových a linuxových operačních systémů. Na nich stačí program spustit příkazem openssl, nebo ho napřed doinstalovat. Pokud pracujete ve Windows, musíte si OpenSSL stáhnout v již zkompilované podobě (nebo zkompilovat zdrojový kód). Instalační soubory najdete na webu projektu Win32 OpenSSL Installation, který připravuje program OpenSSL pro Windows. Aktuální verze OpenSSL 1.0.1e byla zveřejněna 11. 2. 2013.

Chyba can’t open config file openssl.cnf

Pravděpodobně se po instalaci a prvním spuštění setkáte s chybou "can’t open config file /usr/local/ssl/openssl.cnf". V tom případě je nutné v systému Windows ručně nastavit proměnnou OPENSSL_CONF, která bude odkazovat na umístění konfiguračního souboru openssl.cfg. 

Nastavení můžete provést buď ve Vlastnostech systému přidáním proměnné s názvem OPENSSL_CONF a hodnotou C:umisteni-instalacebinopenssl.cfg, nebo tímto příkazem zadaným do příkazového řádku:

set OPENSSL_CONF=c:[cesta do adresáře OpenSSL]binopenssl.cfg

Vygenerování privátního klíče

Privátní klíč je váš soukromý klíč, který nesmí opustit server a za žádných okolností jej nesmí získat nikdo jiný (proto nedoporučuji generování privátního klíče ve webových nástrojích, které ho posílají e-mailem). Na serveru slouží k dešifrování dat zašifrovaných certifikátem, který funguje jako veřejný klíč. Získáním privátního klíče by se mohl neoprávněný držitel vydávat za vás a dešifrovat data zašifrované vaším certifikátem.

Vygenerování privátního klíče provedete zadáním tohoto příkazu do programu OpenSSL:

openssl genrsa -des3 -out klic-s-heslem.key 2048

Použití parametru -des3 zahesluje privátní klíč a naopak s jeho vynecháním nebude privátní klíč zaheslován. Pokud privátní klíč bude chráněn heslem, bude nutné při každé práci s ním (generování CSR, start Apache) toto heslo zadat. Doporučujeme heslo použít, ale s uvážením na konkrétní webový server a jeho podporu této funkce.

Parametr -out definuje výstup do souboru a jeho pojmenování. Doporučujeme privátní klíče ukládat jako soubory s koncovkou .KEY, abyste se v kryptografickém materiálu lépe vyznali. Pro použití klíče to však není důležité, můžete použít i jinou příponu.

Číslo 2048 určuje bitovou hloubku klíče. Nižší bitová hloubka jak 2048 bitů se již nepoužívá (podpora 1024b klíčů již skončila).

SSLMARKET DOPORUČUJE

Vygenerování CSR requestu

Žádost o certifikát (CSR request), tedy váš veřejný klíč, se generuje z vašeho privátního klíče. Do programu OpenSSL zadejte příkaz:

openssl req -new -key klic-s-heslem.key -out nazev.csr

Parametr -key určuje název souboru s privátním klíčem a parametr -out název výstupu, tedy soubor s CSR requestem.

Následně vás program vyzve k zadání údajů pro CSR request.

Country Name (2 letter code) [US]: Název státu velkými písmeny dle normy ISO, například CZ
State or Province Name (full name) []: Například Czech Republic
Locality Name (eg, city) []: Město, kde máte sídlo. Například Praha, Brno
Organization Name (eg, company) []: Název organizace či osoby žádající o certifikát
Organizational Unit Name (eg, section) []: Název organizační jednotky či oddělení. Můžete zadat například Internet, Software, Marketing.
Common Name (eg, YOUR name) []: Nejdůležitější údaj - doména, pro kterou bude certifikát vystaven. Rozlišuje se tvar domény s WWW a bez, stejně jako domény nižšího řádu. Například www.sslmarket.cz.

Email Address []: E-mailová adresa - není požadováno, nevyplňujte.

Následují ještě dva rozšiřující atributy, které nevyplňujte (jen potvrďte Enterem):

A challenge password []: Heslo, které se dle standardu používá pro revokaci. Nevyplňujte!
An optional company name []: Jiný název společnosti.

V souboru s CSR requestem najdete žádost o certifikát zakódovanou ve formátu Base64, který slouží pro uložení binárních dat v textové podobě. Na první pohled vám proto přijdou data jako nesmyslný text. Chcete-li si údaje v CSR ověřit, použijte příkaz req -noout -text -in nazev.csr

Pro kontrolu údajů v CSR, ale i v certifikátu, můžete použít webový nástroj CSR Decoder And Certificate Decoder.

Vygenerovaný CSR request můžete vložit do administrace SSLmarket do objednávky vašeho certifikátu, nebo poslat naší podpoře na admin@zoner.cz.

Odstranění hesla z privátního klíče

Pokud by vám zaheslování privátního klíče činilo problém při používání certifikátu, nebo váš webhoster požaduje privátní klíč bez hesla, je možné ho v OpenSSL odstranit. Příkaz na odstranění hesla z privátního klíče je následující:

rsa -in klic-s-heslem.key -out klic-bez-hesla.key

Parametrem -in odkazujete na existující soubor zaheslovaného privátního klíče, v parametru -out potom specifikujete název souboru s privátním klíčem bez hesla.

Neváhejte se v případě potřeby obrátit na naši zákaznickou podporu, nově i přes živý online chat.


Ing. Jindřich Zechmeister
Specialista pro bezpečnostní SSL certifikáty
DigiCert TLS/SSL Professional
e-mail: jindrich.zechmeister(at)zoner.cz