Přeskočit na obsah
Návody

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.

Seznameni s OpenSSL

OpenSSL je mocny nastroj pro praci s certifikaty a open source implementace protokolu SSL/TLS. Poskytuje kryptograficke knihovny, jejichz funkce vyuzivaji webove servery a jine programy pracujici s sifrovanim. Nenechte se prekvapit ci odradit tim, ze program nema graficke rozhrani. Pri praci s nim zjistite, ze je to naopak vyhoda.

Instalace OpenSSL a konfigurace

Program OpenSSL je vetsinou jiz zahrnut v instalaci unixovych a linuxovych operacnich systemu. Na nich staci program spustit prikazem openssl, nebo ho napred doinstalovat. Pokud pracujete ve Windows, musite si OpenSSL stahnout v jiz zkompilovane podobe (nebo zkompilovat zdrojovy kod). Instalacni soubory najdete na webu projektu Win32 OpenSSL Installation, ktery pripravuje program OpenSSL pro Windows. Aktualni verze OpenSSL 1.0.1e byla zverejnena 11. 2. 2013.

Chyba can't open config file openssl.cnf

Pravdepodobne se po instalaci a prvnim spusteni setkate s chybou "can't open config file /usr/local/ssl/openssl.cnf". V tom pripade je nutne v systemu Windows rucne nastavit promennou OPENSSL_CONF, ktera bude odkazovat na umisteni konfiguracniho souboru openssl.cfg.

Nastaveni muzete provest bud ve Vlastnostech systemu pridanim promenne s nazvem OPENSSL_CONF a hodnotou C:umisteni-instalacebinopenssl.cfg, nebo timto prikazem zadanym do prikazoveho radku:

set OPENSSL_CONF=c:[cesta do adresare OpenSSL]binopenssl.cfg

Vygenerovani privatniho klice

Privatni klic je vas soukromy klic, ktery nesmi opustit server a za zadnych okolnosti jej nesmi ziskat nikdo jiny (proto nedoporucuji generovani privatniho klice ve webovych nastrojich, ktere ho posilaji e-mailem). Na serveru slouzi k desifrovani dat zasifrovanych certifikatem, ktery funguje jako verejny klic. Ziskanim privatniho klice by se mohl neopravneny drzitel vydavat za vas a desifrovat data zasifrovane vasim certifikatem.

Vygenerovani privatniho klice provedete zadanim tohoto prikazu do programu OpenSSL:

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

Pouziti parametru -des3 zahesluje privatni klic a naopak s jeho vynechanim nebude privatni klic zaheslovany. Pokud privatni klic bude chranen heslem, bude nutne pri kazde praci s nim (generovani CSR, start Apache) toto heslo zadat. Doporucujeme heslo pouzit, ale s uvazenim na konkretni webovy server a jeho podporu teto funkce.

Parametr -out definuje vystup do souboru a jeho pojmenovani. Doporucujeme privatni klice ukladat jako soubory s koncovkou .KEY, abyste se v kryptografickem materialu lepe vyznali. Pro pouziti klice to vsak neni dulezite, muzete pouzit i jinou priponu.

Cislo 2048 urcuje bitovou hloubku klice. Nizsi bitova hloubka jak 2048 bitu se jiz nepouziva (podpora 1024b klicu jiz skoncila).

Vygenerovani CSR requestu

Zadost o certifikat (CSR request), tedy vas verejny klic, se generuje z vaseho privatniho klice. Do programu OpenSSL zadejte prikaz:

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

Parametr -key urcuje nazev souboru s privatnim klicem a parametr -out nazev vystupu, tedy soubor s CSR requestem.

Nasledne vas program vyzve k zadani udaju pro CSR request.

Country Name (2 letter code) [US]: Nazev statu velkymi pismeny dle normy ISO, napriklad CZ
State or Province Name (full name) []: Napriklad Czech Republic
Locality Name (eg, city) []: Mesto, kde mate sidlo. Napriklad Praha, Brno
Organization Name (eg, company) []: Nazev organizace ci osoby zadajici o certifikat
Organizational Unit Name (eg, section) []: Nazev organizacni jednotky ci oddeleni. Muzete zadat napriklad Internet, Software, Marketing.
Common Name (eg, YOUR name) []: Nejdulezitejsi udaj - domena, pro kterou bude certifikat vystaven. Rozlisuje se tvar domeny s WWW a bez, stejne jako domeny nizsiho radu. Napriklad www.sslmarket.cz.

Email Address []: E-mailova adresa - neni pozadovano, nevyplnujte.

Nasleduji jeste dva rozsirujici atributy, ktere nevyplnujte (jen potrdte Enterem):

A challenge password []: Heslo, ktere se dle standardu pouziva pro revokaci. Nevyplnujte!
An optional company name []: Jiny nazev spolecnosti.

V souboru s CSR requestem najdete zadost o certifikat zakodovanou ve formatu Base64, ktery slouzi pro ulozeni binarnich dat v textove podobe. Na prvni pohled vam proto prijdou data jako nesmyslny text. Chcete-li si udaje v CSR overit, pouzijte prikaz:

req -noout -text -in nazev.csr

Pro kontrolu udaju v CSR, ale i v certifikatu, muzete pouzit webovy nastroj CSR Decoder And Certificate Decoder.

Vygenerovany CSR request muzete vlozit do administrace SSLmarket do objednavky vaseho certifikatu, nebo poslat nasi podpore na admin@zoner.cz.

Odstraneni hesla z privatniho klice

Pokud by vam zaheslovani privatniho klice cinilo problem pri pouzivani certifikatu, nebo vas webhoster pozaduje privatni klic bez hesla, je mozne ho v OpenSSL odstranit. Prikaz na odstraneni hesla z privatniho klice je nasledujici:

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

Parametrem -in odkazujete na existujici soubor zaheslovaneho privatniho klice, v parametru -out potom specifikujete nazev souboru s privatnim klicem bez hesla.

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