Späť na blog

Základy OpenSSL: Práca s privátnymi kľúčmi, žiadosťami o podpísanie certifikátu a SSL certifikátmi

Základy OpenSSL: Práca s privátnymi kľúčmi, žiadosťami o podpísanie certifikátu a SSL certifikátmi

OpenSSL je open-source kryptografická knižnica, ktorá obsahuje rôzne príkazy používané v protokole TLS a infraštruktúre verejných kľúčov. OpenSSL bol vydaný v roku 1998 a je k dispozícii pre systémy Windows, Linux, macOS a BSD. Príkaz OpenSSL vám pomôže vykonávať rôzne úlohy vrátane žiadosti o podpísanie certifikátu (CSR), generovania súkromných kľúčov a certifikácie SSL.

OpenSSL je dôležitý, pretože zabezpečuje správnu implementáciu SSL. Získanie SSL správnym spôsobom je kľúčové pre bezpečnosť vašej webovej lokality. Okrem toho Google, ktorý je popredným vyhľadávačom, uprednostňuje webové lokality s implementovanými certifikátmi SSL. Niektoré prehliadače ako Chrome a Firefox môžu označiť vašu webovú lokalitu ako Nezabezpečenú, ak nemáte správny certifikát SSL. Preto je prvoradé prevádzkovať návštevnosť vašej webovej lokality cez šifrovaný HTTPS protokol.

Najprv to najdôležitejšie

Tento návod je príručka v štýle ťaháka, ktorá obsahuje niektoré, ale pravdepodobne nie všetky príkazy OpenSSL, ktoré môžete použiť v každodenných scenároch.

Prvá časť vysvetľuje všetko, čo potrebujete vedieť o žiadostiach o podpísanie certifikátu (CSR). Ak ste sa s tým však už oboznámili, môžete prejsť na akúkoľvek inú sekciu, ktorá sa týka toho, čo sa snažíte dosiahnuť. Každá sekcia obsahuje úryvok príkazového riadka na dosiahnutie toho, čo uvádza podnadpis.

Začnime!

Sekcia 1: Pochopenie žiadostí o podpísanie certifikátu (CSR)

Žiadosť o podpísanie certifikátu je nevyhnutným predpokladom pri získavaní certifikátu SSL od certifikačnej autority (CA). CSR obsahuje verejný kľúč z páru kľúčov a niektoré ďalšie informácie. Tieto informácie musíte vložiť do certifikátu počas procesu podpisovania.

Počas generovania CSR ste vyzvaní na poskytnutie identifikačných údajov, ktoré sú známe ako Distinguished Name (DN). DN obsahuje polia potrebné pre certifikát, ako napríklad Common Name (CN), čo je presný plne kvalifikovaný názov domény (FQDN) hostiteľa, ktorý bude certifikát používať. Ostatné polia DN slúžia na dodatočné informácie, ako je krajina, štát, názov lokality a názov organizácie alebo firmy, ak generujete certifikáty špecifické pre vaše podnikanie. Výzvy môžete preskočiť poskytnutím informácií zo súboru alebo prostredníctvom príkazového riadka.

Pozrite si príklad výzvy na zadanie informácií CSR na snímke obrazovky nižšie:

Informácie môžete poskytnúť v jednoradkovom príkaze, aby ste sa vyhli výzvam, pridaním príznaku -subj, ako je znázornené nižšie, a poskytnutím informácií pre polia:

Vyššie uvedený príkaz preberá rovnaké informácie zobrazené v príklade bloku kódu výziev na zadanie informácií CSR.

Sekcia 2: Generovanie žiadostí o podpísanie certifikátu

V tejto sekcii sa budeme zaoberať príkazmi OpenSSL, ktoré môžete použiť na generovanie CSR a súkromných kľúčov. CSR sú potrebné na vyžiadanie certifikátov SSL od certifikačnej autority (CA).

Generovanie súkromného kľúča a žiadosti o podpísanie certifikátu

Túto metódu môžete použiť, ak chcete, aby certifikačná autorita vydala certifikát SSL na zabezpečenie vášho Apache alebo Nginx server na obsluhu prevádzky cez HTTPS, t. j. HTTP s TLS. CSR vygenerovaný pomocou tohto príkazu môže byť odoslaný certifikačnej autorite (CA) na vyžiadanie SSL certifikátu podpísaného CA. Môžete postupovať podľa našich podrobných návodov, ako nastaviť vaše Apache alebo Nginx servery na Ubuntu.

Zadaním nasledujúceho príkazu do terminálu vygenerujete 2048-bitový súkromný kľúč (domain.key) a CSR (domain.csr) od nuly:

Odpovedzte na výzvy s vašimi konkrétnymi informáciami pre CSR. Voliteľne môžete k príkazu pridať príznak -subj, aby ste sa vyhli výzvam:

Príznak -newkey rsa:2048 určuje, že kľúč by mal byť vygenerovaný pomocou 2048-bitového algoritmu RSA. Príznak -nodes označuje, že pre súkromný kľúč sa nepoužije žiadne šifrovanie prístupovou frázou. Možnosť -new nie je zahrnutá, ale predpokladá sa, čo znamená, že sa generuje nový CSR.

Generovanie žiadosti o podpísanie certifikátu (CSR) z existujúceho súkromného kľúča

Ak už máte súkromný kľúč, môžete použiť túto metódu na vygenerovanie CSR. Ten potom použijete na vyžiadanie SSL certifikátu od certifikačnej autority (CA). Zadajte nasledujúci príkaz na vygenerovanie nového CSR (domain.csr) pomocou existujúceho súkromného kľúča (domain.key):

Odpovedzte na výzvy s vašimi konkrétnymi informáciami pre CSR. Voliteľne môžete k príkazu pridať príznak -subj, aby ste sa vyhli výzvam:

Príznak -key určuje existujúci súkromný kľúč (domain.key), ktorý sa má použiť na vygenerovanie nového CSR. Príznak -new označuje, že sa generuje nový CSR.

Generovanie žiadosti o podpísanie certifikátu (CSR) z existujúceho certifikátu a súkromného kľúča

Ak už máte existujúci certifikát, ktorý by ste chceli použiť na vygenerovanie CSR, môžete použiť túto metódu. Táto metóda môže byť užitočná, ak vy alebo vaša certifikačná autorita stratíte pôvodný CSR a potrebujete ho vygenerovať pomocou predtým zadaných informácií CSR bez toho, aby ste ich museli zadávať znova. Príkaz extrahuje informácie z existujúceho certifikátu. Zadajte nasledujúci príkaz do terminálu na vytvorenie nového CSR (domain.csr) pomocou existujúceho certifikátu (domain.crt) a existujúceho súkromného kľúča (domain.key):

Možnosť -x509toreq označuje, že používate X509 certifikát na vygenerovanie CSR.

Sekcia 3: Generovanie SSL certifikátov

V niektorých situáciách môžete chcieť použiť SSL certifikát bez starostí so získavaním certifikátu podpísaného certifikačnou autoritou (CA). Táto sekcia vysvetľuje, ako môžete podpísať svoje vlastné certifikáty. Je to platné a bezplatné. Tieto certifikáty sa označujú ako samopodpísané certifikáty, a sú pomerne bežné.

Samopodpísaný certifikát je podpísaný vlastným súkromným kľúčom. Samopodpísané certifikáty aj certifikáty podpísané certifikačnou autoritou (CA) fungujú rovnako dobre na šifrovanie údajov a sieťovej prevádzky. Pri samopodpísaných certifikátoch však používatelia zvyčajne dostanú v prehliadači upozornenie, že certifikát nie je dôveryhodný. Samopodpísané certifikáty preto môžete použiť pre webové stránky, ktoré si s používateľmi nevymieňajú citlivé informácie, alebo na neprodukčných serveroch. Nižšie nájdete príkazy OpenSSL, ktoré môžete použiť na generovanie samopodpísaných certifikátov.

  • Generovanie samopodpísaného certifikátu

Túto metódu môžete použiť na vygenerovanie SSL certifikátu na zabezpečenie vášho servera Apache alebo Nginx. Tým sa zabezpečí, že prevádzka bude prebiehať cez HTTPS alebo HTTP cez TLS, bez toho, aby ste museli ísť do certifikačnej autority (CA) na podpísanie certifikátu:

Odpovedzte na výzvy s vašimi konkrétnymi informáciami pre CSR. Voliteľne môžete pridať príznak -subj k príkazu, aby ste sa vyhli výzvam:

Príznak -x509 označuje vytvorenie samopodpísaného certifikátu. Možnosť -days 365 určuje počet dní, počas ktorých bude certifikát platný. V tomto prípade je to 365 dní. Môžete si zvoliť aj iný počet dní. Príkaz vygeneruje dočasné CSR na uchovanie informácií, ktoré by ste mali priradiť k certifikátu.

  • Generovanie samopodpísaného certifikátu z existujúceho súkromného kľúča

Táto metóda vám pomôže vygenerovať samopodpísaný certifikát z vášho už existujúceho súkromného kľúča. Zadajte nasledujúci príkaz na vygenerovanie samopodpísaného certifikátu (domain.crt) pomocou existujúceho súkromného kľúča (domain.key):

Poskytnite výzvam vaše konkrétne informácie pre CSR. Voliteľne môžete pridať príznak -subj k príkazu, aby ste sa vyhli výzvam:

Príznak -x509 označuje vytvorenie samopodpísaného certifikátu. Možnosť -days 365 určuje počet dní, počas ktorých bude certifikát platný. V tomto prípade je to 365 dní. Môžete si zvoliť aj iný počet dní. Možnosť -new spustí výzvu na zadanie informácií pre CSR.

Sekcia 4: Zobrazenie certifikátov

Certifikáty a súbory CSR sú kódované a ukladané s príponou .pem prípona. Ide o skratku pre Privacy-Enhanced Mail. Je to formát súboru na ukladanie a odosielanie kryptografických kľúčov, certifikátov a iných dôležitých údajov. Súbory PEM nie sú pre ľudí ľahko čitateľné. V tejto sekcii nájdete príkazy, ktoré môžete použiť na zobrazenie záznamov zo zakódovaných súborov PEM.

  • Zobrazenie súborov CSR

Zadajte nasledujúci príkaz na zobrazenie a overenie obsahu CSR (domain.csr) vo vašom termináli:

Napríklad vyššie uvedený príkaz môže vypísať niečo takéto:

Viewing CSR files

  • Zobrazenie záznamov certifikátu

Zadajte nasledujúci príkaz na zobrazenie obsahu certifikátu (domain.crt):

Vyššie uvedený príkaz môže vypísať niečo takéto:

OpenSSL

  • Overenie, či bol certifikát podpísaný certifikačnou autoritou

Na overenie, či certifikát (domain.crt) bol podpísaný určitým certifikátom CA (ca.crt), zadajte nasledujúci príkaz:

 

Sekcia 5: Súkromné kľúče

Ak hľadáte príkazy OpenSSL potrebné na vytváranie a overovanie súkromných kľúčov, táto sekcia je pre vás.

  • Vytvorenie súkromného kľúča

Na vytvorenie heslom chráneného 2048-bitového súkromného kľúča (domain.key), zadajte do vášho terminálu nasledujúci príkaz:

Príkaz vás vyzve na zadanie hesla na dokončenie procesu. Pozrite si snímku obrazovky nižšie:

Creating a Private Key

  • Overenie súkromného kľúča

Na overenie platnosti súkromného kľúča (domain.key), zadajte do vášho terminálu nasledujúci príkaz:

Potom budete musieť zadať heslo. Ak je súkromný kľúč zašifrovaný a zadáte správnu prístupovú frázu, nezašifrovaný kľúč sa zobrazí v termináli. Pozrite si snímku obrazovky nižšie:

Verifying a Private Key

  • Overenie, či sa súkromný kľúč zhoduje s certifikátom a CSR

Ak chcete skontrolovať, či sa súkromný kľúč (domain.key) zhoduje s certifikátom (domain.crt) a CSR (domain.csr), zadajte do terminálu nasledujúce príkazy:

Ak si všimnete, že výstup vyššie uvedených príkazov je identický, potom je možné, že súkromný kľúč, certifikát a CSR spolu súvisia.

  • Zašifrovanie súkromného kľúča

Ak máte nezašifrovaný súkromný kľúč (unencrypted.key) a chcete získať zašifrovanú verziu kľúča (encrypted.key), zadajte do terminálu nasledujúci príkaz:

Príkaz vás vyzve na zadanie prístupovej frázy na zašifrovanie súkromného kľúča.

  • Dešifrovanie súkromného kľúča

Ak máte zašifrovaný súkromný kľúč (encrypted.key) a chcete získať jeho dešifrovanú verziu (decrypted.key), zadajte do terminálu nasledujúci príkaz:

Príkaz vás vyzve na zadanie prístupovej frázy pre zašifrovaný kľúč. Ak zadáte správnu prístupovú frázu, kľúč sa dešifruje. Výstup sa uloží do decrypted.key.

 

Sekcia 6: Konverzia formátov certifikátov

Možno ste si všimli, že doteraz sme pracovali s X.509 certifikátmi, ktoré sú kódované pomocou ASCII PEM. Aj keď je to v poriadku, existuje množstvo iných typov kódovania certifikátov a kontajnerov, ktoré môžete použiť. V niektorých aplikáciách môžete uprednostniť určité formáty pred inými. Okrem toho môžu niektoré rôzne formáty obsahovať viacero položiek, ako napríklad súkromný kľúč, CSR a certifikát podpísaný certifikačnou autoritou (CA) v jednom súbore. Na konverziu medzi rôznymi formátmi certifikátov môžete použiť aj OpenSSL. Čítajte ďalej a dozviete sa niektoré z príkazov OpenSSL na konverziu formátov certifikátov.

  • Konverzia PEM na DER

DER (Distinguished Encoding Rules) je binárne kódovanie pre X.509 certifikáty a súkromné kľúče. Ak chcete previesť certifikát kódovaný v PEM (domain.crt) na certifikát kódovaný v DER (domain.der), zadajte nasledujúci príkaz:

Väčšinu prípadov použitia formátu kódovania DER nájdete v programovacom jazyku Java.  Postupujte podľa tohto návodu na rýchle nastavenie Javy na vašom serveri Ubuntu.

  • Konverzia DER na PEM

Ak chcete previesť certifikát kódovaný v DER (domain.der) na certifikát PEM (domain.crt), zadajte nasledujúci príkaz:

 

  • Konverzia PEM na PKCS7

Možno budete chcieť pridať certifikáty PEM, napríklad domain.crt a ca-chain.crt do súboru PKCS7 (domain.p7b). Na dosiahnutie tohto cieľa slúži nasledujúci príkaz:

Možnosť -certfile môžete použiť viackrát na určenie certifikátov, ktoré sa majú pridať do súboru PKCS7. Súbory PKCS7 sú dôležité najmä pre úložiská kľúčov Java (Java Key stores) a Microsoft IIS. Sú známe aj ako súbory P7B, ide o súbory ASCII, ktoré môžu obsahovať certifikáty a certifikáty podpísané certifikačnou autoritou.

  • Konverzia PKCS7 na PEM

Ak chcete previesť súbor PKCS7 (domain.p7b) na súbor kódovaný v PEM (domain.crt), zadajte do terminálu nasledujúci príkaz:

 

  • Konverzia PEM na PKCS12

Ak chcete skombinovať súkromný kľúč (domain.key) a certifikát (domain.crt) do PKCS12 súbor (domain.pfx), zadajte nasledujúci príkaz:

Príkaz vás vyzve na zadanie exportných hesiel, ktoré môžete voliteľne nechať prázdne. K súboru PKCS12 môžete pripojiť viacero certifikátov ich spojením do jedného súboru PEM (domain.crt). PKCS12 je známy aj ako PFX a najčastejšie sa používa v Microsoft IIS.

  • Prevod PKCS12 na PEM

Ak chcete previesť súbor PKCS12 (domain.pfx) do formátu kódovaného v PEM (domain.combined.crt), zadajte nasledujúci príkaz:

Súbor PEM vytvorený vyššie uvedeným príkazom obsahuje všetky položky, ktoré súbor PKCS12 obsahoval.

Sekcia 7: Kontrola verzie OpenSSL

Verzia akéhokoľvek softvéru, ktorý používate, môže ovplyvniť možnosti spustených aplikácií. Preto je potrebné overiť verziu. To isté platí pre OpenSSL. Niektoré možnosti príkazového riadka môžu v jednej verzii chýbať a v inej môžu byť k dispozícii. Ak chcete zobraziť verziu OpenSSL, ktorú používate, zadajte nasledujúci príkaz:

Nižšie je uvedený výstup, ktorý sme dostali pri spustení vyššie uvedeného príkazu počas vytvárania tohto návodu:

Nižšie nájdete skutočnú snímku obrazovky:

OpenSSL

Záver

V tomto návode sme si vysvetlili, čo je OpenSSL, prebrali sme žiadosti o podpísanie certifikátu (CSR) a niektoré z dôležitých príkazov OpenSSL, ktoré môžete použiť vo svojom serverovom prostredí.

Chýba nám nejaký dôležitý príkaz alebo máte problémy s niektorým z príkazov vo vašom nastavení servera na CloudSigma? Neváhajte kontaktovať náš tím zákazníckej podpory 24/7 na chate v reálnom čase a prediskutovať to.

Príjemnú prácu s počítačom!

author

Manpreet Singh

Autor · CloudSigma

Preslav Dobrev je kreatívny dizajnér v spoločnosti CloudSigma, ktorý sa zameriava na konzistentnú firemnú identitu prostredníctvom tradičných a inovatívnych marketingových kanálov. Dokáže brilantne spájať umeleckú víziu so strategickým marketingom, čím vytvára pôsobivé príbehy značky.

Komentáre

Zatiaľ žiadne komentáre. Buďte prvý.