Jak už to tak bývá, ne všechno si pamatuju, a tak si dělám poznámky, abych neobjevoval znova již objevené :). Dneska je již samozřejmostí, vše alespoň trochu důležité šifrovat či podepisovat, i když následující návod využijeme spíše na svých serverech pro generování certifikátů služeb, např. HTTPS, POP3S, IMAPS, SMTPS, FTPS, ... nebo taky pro OpenVPN, kde se klient prokazuje certifikátem.
K čemu všemu slouží elektronický podpis, certifikační autority a v našem případě nejrozšířenější X.509 certifikáty se dozvíte třeba zde.
Uvedl bych zde několik postřehů:
extendedKeyUsage = clientAuth,emailProtection
Pro usnadnění práce používám několik skriptů.
vygeneruje žádost a privátní klíč
openssl req -new -out cert.req -keyout cert.key -nodes
podepíše žádost -> certifikát
openssl ca -out cert.crt -verbose -infiles cert.req cat cert.crt cert.key > cert.pem chmod 600 cert.key cert.pem
vygeneruje .p12 soubor včetně privátního klíče vhodný pro import do poštovního klienta
openssl pkcs12 -export -in cert.crt -inkey cert.key -out cert.p12
Soubor xx.pem se nám uloží do adresáře new_certs, přesuneme ho do certs. Soubory .pem a .p12 je vhodné si schovat, ostatní se musí vymazat.
Ze starého certifikátu můžeme za pomoci privátního klíče vygenerovat zpět žádost o certifikát. Použijeme pro to příkaz
openssl x509 -x509toreq -in cert.pem -signkey key.pem -out cert.req
Pro podepsání této žádosti je nutné ještě odvolat původní certifikát, což provedeme
openssl ca -revoke cert.pem
Nyní podepíšeme nový certifikát za použití skriptu ca_sign a jsme téměř hotoví. Teď totiž přijde trošku náročnější práce, vygenerovat všechny potřebné soubory, nahrát je místo starých a restartovat odpovídající služby.
Máme několik druhů souborů:
Jednotlivé soubory je mezi sebou možné konvertovat.
Pokud chceme ze souboru dostat privátní klíč a uložit ho někam, použijeme:
openssl rsa -in cert.pem -out cert.key
Pokud chceme ze souboru dostat veřejný klíč včetně informací o něm:
openssl x509 -in cert.pem -out cert.crt -text
Nyní pokud chceme spojit veřejný a privátní klíč do stejného souboru:
cat cert.crt > cert.pem cat cert.key >> cert.pem
Při prodlužování doby platnosti budeme tyto operace pravděpodobně potřebovat, neboť v souborech, kde jsou obě části dohromady, máme uloženu aktuální privátní část aktuálního klíče, ale starý certifikát. Postup bude vypadat nějak takto:
openssl rsa -in old.pem -out cert.key openssl x509 -in new.pem -out cert.pem -text cat cert.key >> cert.pem chmod 600 cert.key cert.pem
Komentáře
Prodloužení platnosti self-signed certifikátu
Stejně jako u jiného certifikátu vytvoříme z certifikátu zpět request:
openssl x509 -x509toreq -in server.crt -signkey server.key -out server.req
Z requestu vyrobíme 5 let platný self-signed certifikát:
openssl x509 -out server.crt -signkey server.key -req -in server.req -out server.crt -days 1825
dobrý článek, docela mi
dobrý článek, docela mi do začátku pomohl, nicméně, pak jsem objevil XCA, což je velmi dobře udělané GRAFICKÉ rozhraní pro správu certifikátů, CRl a podobně.
Celkově lze říct, že openSSl je mocný a schopný nástroj, nicméně i v tomto OpenSource projektu se již objevily chybičky a asi i kompromitace, no, u těch propietárních SSL produktů jsem si kompromitaci téměř jist.