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:
|
1 2 3 4 5 6 7 |
Krajina Názov (2 písmenný kód) [AU]:CH Štát alebo provincia Názov (celý názov) [Nejaký-Štát]:Züürich Lokalita Názov (napr., mesto) []:Staré Mesto Organizácia Názov (napr., spoločnosť) [Internet Widgits Pty Ltd]:Example Cloudsigma Spoločnosť Organizačná jednotka Názov (napr., sekcia) []:Cloud Technology Bežný názov (n.apr.. server FQDN alebo VAŠE meno) []:cloudsigma.com E-mailová adresa []:info@cloudsigma.com |
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:
|
1 |
-subj "/C=CH/ST=Zürich/L=Old Town/O=Example Cloudsigma Company/CN=cloudsigma.com" |
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:
|
1 |
openssl req -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr |
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:
|
1 |
openssl req -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr -subj "/C=CH/ST=Zürich/L=Old Town/O=Example Cloudsigma Company/CN=cloudsigma.com" |
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):
|
1 |
openssl req -key domain.key -new -out domain.csr |
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:
|
1 |
openssl req -key domain.key -new -out domain.csr -subj "/C=CH/ST=Zürich/L=Old Town/O=Example Cloudsigma Company/CN=cloudsigma.com" |
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):
|
1 |
openssl x509 -in domain.crt -signkey domain.key -x509toreq -out domain.csr |
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:
|
1 |
openssl req -newkey rsa:2048 -nodes -keyout domain.key -x509 -days 365 -out domain.crt |
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:
|
1 |
openssl req -newkey rsa:2048 -nodes -keyout domain.key -x509 -days 365 -out domain.crt -subj "/C=CH/ST=Zürich/L=Old Town/O=Example Cloudsigma Company/CN=cloudsigma.com" |
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):
|
1 |
openssl req -key domain.key -new -x509 -days 365 -out domain.crt |
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:
|
1 |
openssl req -key domain.key -new -x509 -days 365 -out domain.crt -subj "/C=CH/ST=Zürich/L=Old Town/O=Example Cloudsigma Company/CN=cloudsigma.com" |
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:
|
1 |
openssl req -text -noout -verify -in domain.csr |
Napríklad vyššie uvedený príkaz môže vypísať niečo takéto:

- Zobrazenie záznamov certifikátu
Zadajte nasledujúci príkaz na zobrazenie obsahu certifikátu (domain.crt):
|
1 |
openssl x509 -text -noout -in domain.crt |
Vyššie uvedený príkaz môže vypísať niečo takéto:

- 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:
|
1 |
openssl verify -verbose -CAfile ca.crt domain.crt |
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:
|
1 |
openssl genrsa -des3 -out domain.key 2048 |
Príkaz vás vyzve na zadanie hesla na dokončenie procesu. Pozrite si snímku obrazovky nižšie:

- 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:
|
1 |
openssl rsa -check -in domain.key |
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:

- 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:
|
1 2 3 |
openssl rsa -noout -modulus -in domain.key | openssl md5 openssl x509 -noout -modulus -in domain.crt | openssl md5 openssl req -noout -modulus -in domain.csr | openssl md5 |
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:
|
1 |
openssl rsa -des3 -in unencrypted.key -out encrypted.key |
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:
|
1 |
openssl rsa -in encrypted.key -out decrypted.key |
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:
|
1 |
openssl x509 -in domain.crt -outform der -out domain.der |
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:
|
1 |
openssl x509 -inform der -in domain.der -out domain.crt<code> |
- 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:
|
1 |
openssl crl2pkcs7 -nocrl -certfile domain.crt -certfile ca-chain.crt -out domain.p7b |
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:
|
1 |
openssl pkcs7 -in domain.p7b -print_certs -out domain.crt |
- 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:
|
1 |
openssl pkcs12 -inkey domain.key -in domain.crt -export -out domain.pfx |
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:
|
1 |
openssl pkcs12 -in domain.pfx -nodes -out domain.combined.crt |
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:
|
1 |
openssl version -a |
Nižšie je uvedený výstup, ktorý sme dostali pri spustení vyššie uvedeného príkazu počas vytvárania tohto návodu:
|
1 2 3 4 5 6 7 8 |
OpenSSL 1.1.1i 8 Dec 2020 zostavené dňa: Sob Dec 19 15:39:47 2020 UTC platforma: linux-x86_64 možnosti: bn(64,64) rc4(16x,int) des(int) idea(int) blowfish(ptr) kompilátor: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG OPENSSLDIR: "/usr/local/ssl" ENGINESDIR: "/usr/local/lib/engines-1.1" Inicializačný zdroj: os-špecifický |
Nižšie nájdete skutočnú snímku obrazovky:

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!
Komentáre
Zatiaľ žiadne komentáre. Buďte prvý.