OpenSSL je kriptografska biblioteka otvorenog koda koja uključuje razne naredbe koje se koriste u TLS protokolu i Infrastrukturi javnih ključeva. OpenSSL je objavljen 1998. godine i dostupan je za sustave Windows, Linux, macOS i BSD. Naredba OpenSSL pomoći će vam u obavljanju različitih zadataka, uključujući zahtjev za potpisivanje certifikata (CSR), generiranje privatnih ključeva i SSL certifikaciju.
OpenSSL je važan jer osigurava ispravnu implementaciju SSL-a. Dobivanje SSL-a na pravi način ključno je za sigurnost vaše web stranice. Štoviše, Google, koji je vodeća tražilica, daje prednost web stranicama s implementiranim SSL certifikatima. Neki preglednici poput Chromea i Firefoxa mogu označiti vašu web stranicu kao Nije sigurno ako nemate odgovarajući SSL certifikat. Stoga je od iznimne važnosti posluživati promet vaše web stranice putem šifriranog HTTPS protokola.
Prvo i najvažnije
Ovaj je vodič u stilu podsjetnika (cheat sheet) i uključuje neke, ali vjerojatno ne sve OpenSSL naredbe koje biste mogli koristiti u svakodnevnim scenarijima.
Prvi dio objašnjava sve što trebate znati o zahtjevima za potpisivanje certifikata (CSR). Međutim, ako ste s time već upoznati, možete prijeći na bilo koji drugi odjeljak koji je važan za ono što pokušavate postići. Svaki odjeljak sadrži isječak naredbenog retka za postizanje onoga što podnaslov navodi.
Krenimo!
Odjeljak 1: Razumijevanje zahtjeva za potpisivanje certifikata (CSR)
Zahtjev za potpisivanje certifikata preduvjet je za dobivanje SSL certifikata od certifikacijskog tijela (CA). CSR uključuje javni ključ para ključeva i neke dodatne informacije. Morate ih umetnuti u certifikat tijekom procesa potpisivanja.
Tijekom generiranja CSR-a od vas se traži da navedete identifikacijske podatke koji su poznati kao istaknuto ime (Distinguished Name - DN). DN sadrži polja potrebna za certifikat kao što je uobičajeno ime (Common Name - CN), što je točan potpuno kvalificirani naziv domene (FQDN) glavnog računala koje će koristiti certifikat. Ostala polja DN-a služe za dodatne informacije kao što su država, savezna država/pokrajina, naziv mjesta te naziv organizacije ili tvrtke ako generirate certifikate specifične za svoje poslovanje. Možete odabrati preskakanje upita unosom informacija iz datoteke ili putem naredbenog retka.
Pogledajte primjer upita za CSR informacije na snimci zaslona u nastavku:
|
1 2 3 4 5 6 7 |
Država Naziv (2 slovni kod) [AU]:CH Savezna država ili Pokrajina Naziv (puni naziv) [Neka-Država]:Zürich Mjesto Naziv (npr., grad) []:Old Town Organizacija Naziv (npr., tvrtka) [Internet Widgits Pty Ltd]:Example Cloudsigma Tvrtka Organizacijska Jedinica Naziv (npr., odjel) []:Cloud Technology Uobičajeno Naziv (n.pr. poslužitelj FQDN ili VAŠE ime) []:cloudsigma.com E-pošta Adresa []:info@cloudsigma.com |
Informacije možete unijeti u jednoj liniji naredbe kako biste izbjegli upite dodavanjem zastavice -subj kao što je prikazano u nastavku i unosom informacija za polja:
|
1 |
-subj "/C=CH/ST=Zürich/L=Old Town/O=Example Cloudsigma Company/CN=cloudsigma.com" |
Gornja naredba uzima iste informacije prikazane u primjeru bloka koda upita za CSR informacije.
Odjeljak 2: Generiranje zahtjeva za potpisivanje certifikata
U ovom odjeljku pokrit ćemo OpenSSL naredbe koje možete koristiti za generiranje CSR-a i privatnih ključeva. CSR-ovi su potrebni za traženje SSL certifikata od certifikacijskog tijela (CA).
Generiranje privatnog ključa i zahtjeva za potpisivanje certifikata
Ovu metodu možete koristiti ako želite da certifikacijsko tijelo izda SSL certifikat za osiguranje vašeg Apache ili Nginx poslužitelj za posluživanje prometa putem HTTPS-a, tj. HTTP-a s TLS-om. CSR generiran naredbom može se poslati CA-u radi zahtjeva za SSL certifikatom koji je potpisao CA. Možete pratiti naše detaljne vodiče o tome kako postaviti svoj Apache ili Nginx poslužitelje na Ubuntuu.
Unesite sljedeću naredbu u svoj terminal kako biste generirali 2048-bitni privatni ključ (domain.key) i CSR (domain.csr) ispočetka:
|
1 |
openssl req -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr |
Odgovorite na upite sa svojim specifičnim CSR informacijama. Opcionalno, možete dodati zastavicu -subj naredbi kako biste izbjegli upite:
|
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" |
Zastavica -newkey rsa:2048 specificira da ključ treba biti generiran pomoću 2048-bitnog RSA algoritma. Zastavica -nodes označava da nema enkripcije lozinkom za privatni ključ. Postoji opcija -new koja nije uključena, ali se podrazumijeva kako bi označila da se generira novi CSR.
Generiranje zahtjeva za potpisivanje certifikata iz postojećeg privatnog ključa
Ako već imate privatni ključ, možete koristiti ovu metodu za generiranje CSR-a. Zatim ćete ga koristiti za traženje SSL certifikata od CA-a. Unesite sljedeću naredbu za generiranje novog CSR-a (domain.csr) pomoću postojećeg privatnog ključa (domain.key):
|
1 |
openssl req -key domain.key -new -out domain.csr |
Odgovorite na upite sa svojim specifičnim CSR informacijama. Opcionalno, možete dodati -subj flag naredbi kako biste izbjegli upite:
|
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" |
Zastavica -key specificira postojeći privatni ključ (domain.key) koji će se koristiti za generiranje novog CSR-a. Zastavica -new označava da se generira novi CSR.
Generiranje zahtjeva za potpisivanje certifikata iz postojećeg certifikata i privatnog ključa
Ako već imate postojeći certifikat koji biste željeli koristiti za generiranje CSR-a, možete koristiti ovu metodu. Ova metoda može biti korisna ako vi ili vaš CA izgubite izvorni CSR, a trebate ga generirati pomoću prethodno unesenih CSR informacija bez ponovnog unosa. Naredba izdvaja informacije iz postojećeg certifikata. Unesite sljedeću naredbu u svoj terminal kako biste kreirali novi CSR (domain.csr) pomoću postojećeg certifikata (domain.crt) i postojećeg privatnog ključa (domain.key):
|
1 |
openssl x509 -in domain.crt -signkey domain.key -x509toreq -out domain.csr |
Opcija -x509toreq označava da koristite X509 certifikat za generiranje CSR-a.
Odjeljak 3: Generiranje SSL certifikata
U nekim situacijama možda ćete htjeti koristiti SSL certifikat bez gnjavaže oko dobivanja certifikata koji je potpisao CA. Ovaj odjeljak objašnjava kako možete sami potpisati svoje certifikate. To je valjano i besplatno. Ti se certifikati nazivaju samopotpisani certifikati, i prilično su uobičajeni.
Samopotpisani certifikat potpisan je vlastitim privatnim ključem. I samopotpisani certifikati i oni koje je potpisao CA rade jednako dobro za šifriranje podataka i prometa na web stranici. Međutim, kod samopotpisanih certifikata korisnici obično dobivaju upozorenje u svojim preglednicima da certifikat nije pouzdan. Stoga možete koristiti samopotpisane certifikate za web stranice koje ne razmjenjuju osjetljive informacije s korisnicima ili na neprodukcijskim poslužiteljima. U nastavku možete pronaći OpenSSL naredbe koje možete koristiti za generiranje samopotpisanih certifikata.
- Generiranje samopotpisanog certifikata
Ovu metodu možete koristiti za generiranje SSL certifikata kako biste osigurali svoj Apache ili Nginx poslužitelj. To će osigurati da promet dolazi s HTTPS-om, ili HTTP-om preko TLS-a, bez odlaska CA-u radi potpisivanja certifikata:
|
1 |
openssl req -newkey rsa:2048 -nodes -keyout domain.key -x509 -days 365 -out domain.crt |
Odgovorite na upite sa svojim specifičnim CSR informacijama. Opcionalno, možete dodati zastavicu -subj naredbi kako biste izbjegli upite:
|
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" |
Zastavica -x509 označava stvaranje samopotpisanog certifikata. Opcija -days 365 određuje broj dana u kojima će certifikat biti valjan. U ovom slučaju to je 365 dana. Možete odabrati i drugačiji broj dana. Naredba generira privremeni CSR koji sadrži informacije koje trebate povezati s certifikatom.
- Generiranje samopotpisanog certifikata iz postojećeg privatnog ključa
Ova metoda pomoći će vam da generirate samopotpisani certifikat iz vašeg već postojećeg privatnog ključa. Unesite sljedeću naredbu za generiranje samopotpisanog certifikata (domain.crt) pomoću postojećeg privatnog ključa (domain.key):
|
1 |
openssl req -key domain.key -new -x509 -days 365 -out domain.crt |
Pružite upitima svoje specifične CSR informacije. Opcionalno, možete dodati zastavicu -subj naredbi kako biste izbjegli upite:
|
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" |
Zastavica -x509 označava stvaranje samopotpisanog certifikata. Opcija -days 365 određuje broj dana u kojima će certifikat biti valjan. U ovom slučaju to je 365 dana. Možete odabrati i drugačiji broj dana. Opcija -new pokreće upit za CSR informacije.
Odjeljak 4: Pregledavanje certifikata
Certifikati i CSR datoteke kodirani su i pohranjeni s .pem ekstenzijom. To je skraćenica za Privacy-Enhanced Mail. To je format datoteke za pohranu i slanje kriptografskih ključeva, certifikata i drugih ključnih podataka. PEM datoteke nisu lako čitljive ljudima. U ovom odjeljku pronaći ćete naredbe koje možete koristiti za pregled unosa iz kodiranih PEM datoteka.
- Pregledavanje CSR datoteka
Unesite sljedeću naredbu za pregled i provjeru sadržaja CSR-a (domain.csr) na svom terminalu:
|
1 |
openssl req -text -noout -verify -in domain.csr |
Na primjer, gornja naredba može ispisati nešto poput ovoga:

- Pregledavanje unosa certifikata
Unesite sljedeću naredbu za pregled sadržaja certifikata (domain.crt):
|
1 |
openssl x509 -text -noout -in domain.crt |
Gornja naredba može ispisati nešto poput ovoga:

- Provjera je li certifikat potpisalo certifikacijsko tijelo (CA)
Kako biste provjerili je li certifikat (domain.crt) potpisao određeni CA certifikat (ca.crt), unesite sljedeću naredbu:
|
1 |
openssl verify -verbose -CAfile ca.crt domain.crt |
Odjeljak 5: Privatni ključevi
Ako tražite OpenSSL naredbe potrebne za stvaranje i provjeru privatnih ključeva, ovaj odjeljak je za vas.
- Stvaranje privatnog ključa
Za stvaranje lozinkom zaštićenog 2048-bitnog privatnog ključa (domain.key), unesite sljedeću naredbu u svoj terminal:
|
1 |
openssl genrsa -des3 -out domain.key 2048 |
Naredba će od vas tražiti lozinku za dovršetak postupka. Pogledajte snimku zaslona u nastavku:

- Provjera privatnog ključa
Za provjeru valjanosti privatnog ključa (domain.key), unesite sljedeću naredbu u svoj terminal:
|
1 |
openssl rsa -check -in domena.ključ |
Zatim ćete morati unijeti lozinku. Ako je privatni ključ šifriran i unesete ispravnu pristupnu frazu, nešifrirani ključ bit će prikazan na terminalu. Pogledajte snimku zaslona u nastavku:

- Provjerite podudara li se privatni ključ s certifikatom i CSR-om
Ako želite provjeriti podudara li se privatni ključ (domain.key) s certifikatom (domain.crt) i CSR-om (domain.csr), unesite sljedeće naredbe u svoj terminal:
|
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 |
Ako primijetite da je izlaz gornjih naredbi identičan, onda je moguće da su privatni ključ, certifikat i CSR povezani.
- Šifriranje privatnog ključa
Ako imate nešifrirani privatni ključ (unencrypted.key) i želite dobiti šifriranu verziju ključa (encrypted.key), unesite sljedeću naredbu u svoj terminal:
|
1 |
openssl rsa -des3 -in unencrypted.key -out encrypted.key |
Naredba će od vas tražiti pristupnu frazu za šifriranje privatnog ključa.
- Dešifriranje privatnog ključa
Ako imate šifrirani privatni ključ (encrypted.key) i želite dobiti njegovu dešifriranu verziju (decrypted.key), unesite sljedeću naredbu u svoj terminal:
|
1 |
openssl rsa -in encrypted.key -out decrypted.key |
Naredba će od vas tražiti pristupnu frazu za šifrirani ključ. Ako unesete ispravnu pristupnu frazu, on će biti dešifriran. Izlaz će ići u decrypted.key.
Odjeljak 6: Pretvaranje formata certifikata
Možda ste primijetili da smo do sada radili s X.509 certifikatima koji su kodirani s ASCII PEM. Iako je to u redu, postoji niz drugih vrsta kodiranja certifikata i spremnika koje možete koristiti. U nekim aplikacijama možda ćete radije koristiti određene formate u odnosu na druge. Štoviše, neki različiti formati mogu sadržavati više stavki kao što su privatni ključ, CSR i certifikat potpisan od strane CA u jednoj datoteci. Također možete koristiti OpenSSL za pretvaranje između različitih formata certifikata. Čitajte dalje za neke od OpenSSL naredbi za pretvorbu formata certifikata.
- Pretvaranje PEM u DER
DER (Distinguished Encoding Rules) je binarno kodiranje za X.509 certifikate i privatne ključeve. Za pretvaranje PEM-kodiranog certifikata (domain.crt) u DER-kodirani certifikat (domain.der), unesite sljedeću naredbu:
|
1 |
openssl x509 -in domain.crt -outform der -out domain.der |
Većinu slučajeva upotrebe DER formata kodiranja naći ćete u programskom jeziku Java. Slijedite ovaj vodič za brzo postavljanje Jave na vašem Ubuntu poslužitelju.
- Pretvaranje DER u PEM
Za pretvaranje DER-kodiranog certifikata (domain.der) u PEM certifikat (domain.crt), unesite sljedeću naredbu:
|
1 |
openssl x509 -inform der -in domain.der -out domain.crt<code> |
- Pretvaranje PEM u PKCS7
Možda ćete htjeti dodati PEM certifikate, na primjer, domain.crt i ca-chain.crt u PKCS7 datoteku (domain.p7b). Evo naredbe za postizanje toga:
|
1 |
openssl crl2pkcs7 -nocrl -certfile domain.crt -certfile ca-chain.crt -out domain.p7b |
Možete koristiti opciju -certfile više puta kako biste odredili certifikate koje želite dodati u PKCS7 datoteku. PKCS7 datoteke su uglavnom relevantne za Java Key stores i Microsoft IIS. Poznate i kao P7B datoteke, to su ASCII datoteke koje mogu sadržavati certifikate i certifikate potpisane od strane CA.
- Pretvaranje PKCS7 u PEM
Za pretvaranje PKCS7 datoteke (domain.p7b) u PEM kodiranu datoteku (domain.crt), unesite sljedeću naredbu u svoj terminal:
|
1 |
openssl pkcs7 -in domain.p7b -print_certs -out domain.crt |
- Pretvaranje PEM u PKCS12
Za kombiniranje privatnog ključa (domain.key) i certifikata (domain.crt) u PKCS12 datoteku (domain.pfx), unesite sljedeću naredbu:
|
1 |
openssl pkcs12 -inkey domain.key -in domain.crt -export -out domain.pfx |
Naredba će od vas tražiti da unesete lozinke za izvoz, koje po želji možete ostaviti praznima. Možete ulančati više certifikata u PKCS12 datoteku spajanjem certifikata u jednu PEM datoteku (domain.crt). PKCS12 je također poznat kao PFX i uglavnom se koristi u Microsoft IIS.
- Pretvorite PKCS12 u PEM
Za pretvaranje PKCS12 datoteke (domain.pfx) u PEM kodirani format (domain.combined.crt), unesite sljedeću naredbu:
|
1 |
openssl pkcs12 -in domain.pfx -nodes -out domain.combined.crt |
PEM datoteka stvorena gornjom naredbom sadrži sve stavke koje je PKCS12 sadržavao.
Odjeljak 7: Provjera verzije OpenSSL-a
Verzija bilo kojeg softvera koji pokrećete može utjecati na mogućnosti aplikacija koje koristite. Stoga je potrebno utvrditi verziju. Isto vrijedi i za OpenSSL. Neke opcije naredbenog retka mogu nedostajati u jednoj verziji, a biti dostupne u drugoj. Da biste vidjeli verziju OpenSSL-a koju koristite, unesite sljedeću naredbu:
|
1 |
openssl version -a |
Ispod je izlaz koji smo dobili kada smo pokrenuli gornju naredbu tijekom izrade ovog vodiča:
|
1 2 3 4 5 6 7 8 |
OpenSSL 1.1.1i 8 Dec 2020 izgrađeno na: Sub pro 19 15:39:47 2020 UTC platforma: linux-x86_64 opcije: bn(64,64) rc4(16x,int) des(int) idea(int) blowfish(ptr) prevoditelj: 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" Sijanje izvor: os-specifično |
Ispod možete pronaći stvarnu snimku zaslona:

Zaključak
U ovom vodiču objasnili smo što je OpenSSL, pokrili zahtjeve za potpisivanje certifikata (CSR) i neke od ključnih OpenSSL naredbi koje možete koristiti u svom poslužiteljskom okruženju.
Nedostaje li nam neka ključna naredba ili imate problema s bilo kojom od naredbi u postavljanju vašeg poslužitelja na CloudSigma? Slobodno kontaktirajte našu korisničku podršku dostupnu 24/7 putem chata u stvarnom vremenu kako biste raspravili o tome.
Ugodan rad!
Komentari
Još nema komentara. Budite prvi.