Natrag na blog

Osnove OpenSSL-a: Rad s privatnim ključevima, zahtjevima za potpisivanje certifikata i SSL certifikatima

Osnove OpenSSL-a: Rad s privatnim ključevima, zahtjevima za potpisivanje certifikata i SSL certifikatima

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:

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:

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:

Odgovorite na upite sa svojim specifičnim CSR informacijama. Opcionalno, možete dodati zastavicu -subj naredbi kako biste izbjegli upite:

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):

Odgovorite na upite sa svojim specifičnim CSR informacijama. Opcionalno, možete dodati -subj flag naredbi kako biste izbjegli upite:

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):

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:

Odgovorite na upite sa svojim specifičnim CSR informacijama. Opcionalno, možete dodati zastavicu -subj naredbi kako biste izbjegli upite:

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):

Pružite upitima svoje specifične CSR informacije. Opcionalno, možete dodati zastavicu -subj naredbi kako biste izbjegli upite:

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:

Na primjer, gornja naredba može ispisati nešto poput ovoga:

Viewing CSR files

  • Pregledavanje unosa certifikata

Unesite sljedeću naredbu za pregled sadržaja certifikata (domain.crt):

Gornja naredba može ispisati nešto poput ovoga:

OpenSSL

  • 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:

 

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:

Naredba će od vas tražiti lozinku za dovršetak postupka. Pogledajte snimku zaslona u nastavku:

Creating a Private Key

  • Provjera privatnog ključa

Za provjeru valjanosti privatnog ključa (domain.key), unesite sljedeću naredbu u svoj terminal:

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:

Verifying a Private Key

  • 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:

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:

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:

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:

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:

 

  • 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:

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:

 

  • Pretvaranje PEM u PKCS12

Za kombiniranje privatnog ključa (domain.key) i certifikata (domain.crt) u PKCS12 datoteku (domain.pfx), unesite sljedeću naredbu:

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:

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:

Ispod je izlaz koji smo dobili kada smo pokrenuli gornju naredbu tijekom izrade ovog vodiča:

Ispod možete pronaći stvarnu snimku zaslona:

OpenSSL

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!

author

Manpreet Singh

Autor · CloudSigma

Preslav Dobrev je kreativni dizajner u CloudSigma, usredotočen na dosljedan poslovni identitet korištenjem tradicionalnih i inovativnih marketinških kanala. Vješt je u spajanju umjetničke vizije sa strateškim marketingom kako bi stvorio dojmljive brendirane priče.

Komentari

Još nema komentara. Budite prvi.