21 ОпенССЛ примера који ће вам помоћи у стварном свету

Stvaranje, upravljanje i konverzija SSL certifikata pomoću OpenSSL-a

Jedan od najčešće korišćenih alata u SSL svetu za generisanje, preoblikovanje i kontrolu SSL certifikata jeste OpenSSL.

Često ćete se naći u situacijama gde je potrebno rukovati OpenSSL-om na različite načine, a ovde vam predstavljam korisne smernice.

U ovom tekstu objasniću najčešće korišćene OpenSSL komande koje će vam biti od koristi u praksi.

Neke od skraćenica su vezane za certifikate.

  • SSL – Secure Socket Layer (Sloj sigurnih utičnica)
  • CSR – Certificate Signing Request (Zahtev za potpisivanje certifikata)
  • TLS – Transport Layer Security (Sigurnost transportnog sloja)
  • PEM – Privacy Enhanced Mail (Pošta sa poboljšanom privatnošću)
  • DER – Distinguished Encoding Rules (Pravila za razlikovno kodiranje)
  • SHA – Secure Hash Algorithm (Algoritam sigurnog heširanja)
  • PKCS – Public Key Cryptography Standards (Standardi kriptografije javnog ključa)

Napomena: Kurs SSL/TLS operacije može biti koristan ako niste upoznati sa ovim pojmovima.

Kreiranje novog privatnog ključa i zahteva za potpisivanje certifikata

openssl req -out techblog.co.rs.csr -newkey rsa:2048 -nodes -keyout techblog.co.rs.key

Gornja naredba će stvoriti CSR i 2048-bitnu RSA ključnu datoteku. Ako planirate da upotrebite ovaj certifikat na Apache ili Nginx serveru, neophodno je da pošaljete ovaj CSR fajl certifikacionom telu, koje će vam izdati potpisani certifikat, obično u DER ili PEM formatu. Taj certifikat potom treba da konfigurišete na Apache ili Nginx veb serveru.

Generisanje samopotpisanog certifikata

openssl req -x509 -sha256 -nodes -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem

Ova naredba će proizvesti samopotpisani certifikat i ključnu datoteku sa 2048-bitnim RSA algoritmom. Uključio sam i sha256 jer se trenutno smatra najsigurnijim.

Savet: Podrazumevano, generisaće se samopotpisani certifikat sa rokom važenja od samo mesec dana, pa možete razmisliti o definisanju parametra –days kako biste produžili taj period.

Na primer: Samopotpisani certifikat sa rokom važenja od dve godine:

openssl req -x509 -sha256 -nodes -days 730 -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem

Provera CSR datoteke

openssl req -noout -text -in techblog.co.rs.csr

Verifikacija je neophodna da biste bili sigurni da šaljete CSR sa svim potrebnim detaljima nadležnom organu.

Stvaranje RSA privatnog ključa

openssl genrsa -out private.key 2048

Ako vam je potrebno samo da generišete RSA privatni ključ, možete koristiti gornju naredbu. Uključio sam 2048 za jaču enkripciju.

Uklanjanje pristupne fraze iz ključa

openssl rsa -in certkey.key -out nopassphrase.key

Ako koristite pristupnu frazu u ključnoj datoteci, a koristite Apache, svaki put kada pokrenete server, morate uneti lozinku. Ako vam smeta unos lozinke, možete koristiti opciju `openssl rsa -in vdzvdz.key -check` da uklonite pristupnu frazu iz postojećeg ključa.

Provera privatnog ključa

openssl rsa -in certkey.key –check

Ako sumnjate u ispravnost svoje ključne datoteke, možete je proveriti pomoću ove naredbe.

Provera certifikatske datoteke

openssl x509 -in certfile.pem -text –noout

Ako želite da proverite podatke o certifikatu kao što su CN, OU itd., možete koristiti gornju naredbu koja će prikazati detalje certifikata.

Provera autoriteta potpisnika certifikata

openssl x509 -in certfile.pem -noout -issuer -issuer_hash

Svaki certifikat potpisuje autoritet za izdavanje certifikata, i ovu informaciju možete proveriti.

Provera heš vrednosti certifikata

openssl x509 -noout -hash -in bestflare.pem

Konverzija DER u PEM format

openssl x509 –inform der –in sslcert.der –out sslcert.pem

Često će vam certifikaciono telo dostaviti SSL certifikat u .der formatu, a ako ga treba koristiti na Apache ili u .pem formatu, ova komanda će vam pomoći.

Konverzija PEM u DER format

openssl x509 –outform der –in sslcert.pem –out sslcert.der

U slučaju da treba da promenite .pem format u .der.

Konverzija certifikata i privatnog ključa u PKCS#12 format

openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem

Ako treba da koristite certifikat sa Java aplikacijom ili nekom drugom koja prihvata samo PKCS#12 format, možete koristiti ovu naredbu koja će generisati jedan pfx fajl koji sadrži i certifikat i ključnu datoteku.

Savet: Možete uključiti i certifikat lanca prenošenjem –chain kao u nastavku.

openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem -chain cacert.pem

Stvaranje CSR-a pomoću postojećeg privatnog ključa

openssl req –out certificate.csr –key existing.key –new

Ako ne želite da kreirate novi privatni ključ, već da koristite postojeći, možete koristiti ovu naredbu.

Provera sadržaja certifikata u PKCS12 formatu

openssl pkcs12 –info –nodes –in cert.p12

PKCS12 je binarni format, tako da nećete moći da vidite sadržaj u notepadu ili drugom tekst editoru. Ova naredba će vam pomoći da vidite sadržaj PKCS12 datoteke.

Konverzija PKCS12 formata u PEM certifikat

openssl pkcs12 –in cert.p12 –out cert.pem

Ako želite da koristite postojeći pkcs12 format sa Apache ili samo u pem formatu, ovo će biti korisno.

Testiranje SSL certifikata određene URL adrese

openssl s_client -connect yoururl.com:443 –showcerts

Ovo često koristim za validaciju SSL certifikata određene URL adrese sa servera. Ovo je vrlo korisno za proveru detalja protokola, šifre i certifikata.

Saznavanje verzije OpenSSL-a

openssl version

Ako ste zaduženi da osigurate da je OpenSSL siguran, verovatno je jedna od prvih stvari koju treba da uradite da proverite verziju.

Provera datuma isteka certifikata PEM datoteke

openssl x509 -noout -in certificate.pem -dates

Korisno ako planirate da postavite nadzor radi provere validnosti. Prikazaće vam datum u sintaksi notBefore i notAfter. notAfter je onaj koji treba da proverite da biste bili sigurni da li je certifikat istekao ili je još uvek važeći.

npr.

[[email protected] opt]# openssl x509 -noout -in bestflare.pem -dates
notBefore=Jul 4 14:02:45 2015 GMT
notAfter=Aug 4 09:46:42 2015 GMT
[[email protected] opt]#

Provera datuma isteka certifikata za SSL URL

openssl s_client -connect secureurl.com:443 2>/dev/null | openssl x509 -noout –enddate

Još jedna korisna naredba ako planirate daljinski da nadgledate datum isteka SSL certifikata određene URL adrese.

npr.

[[email protected] opt]# openssl s_client -connect google.com:443 2>/dev/null | openssl x509 -noout -enddate

notAfter=Dec 8 00:00:00 2015 GMT

Provera da li je SSL V2 ili V3 prihvaćen na URL-u

Za proveru SSL V2:

openssl s_client -connect secureurl.com:443 -ssl2

Za proveru SSL V3:

openssl s_client -connect secureurl.com:443 –ssl3

Za proveru TLS 1.0:

openssl s_client -connect secureurl.com:443 –tls1

Za proveru TLS 1.1:

openssl s_client -connect secureurl.com:443 –tls1_1

Za proveru TLS 1.2:

openssl s_client -connect secureurl.com:443 –tls1_2

Ako obezbeđujete veb server i morate da proverite da li je SSL V2/V3 omogućen ili ne, možete koristiti ovu naredbu. Ako je aktiviran, dobićete „POVEZANO“ u suprotnom „Neuspešno rukovanje“.

Provera da li je određena šifra prihvaćena na URL-u

openssl s_client -cipher 'ECDHE-ECDSA-AES256-SHA' -connect secureurl:443

Ako radite na bezbednosnim problemima i rezultati testova penetracije pokazuju da su neke od slabih šifri prihvaćene, a vi želite da ih potvrdite, možete koristiti ovu naredbu.

Naravno, moraćete da promenite šifru i URL, prema kojima želite da testirate. Ako se pomenuta šifra prihvati, dobićete „POVEZANO“ u suprotnom „neuspelo rukovanje“.

Nadam se da će vam ove komande pomoći da saznate više o OpenSSL-u za upravljanje SSL certifikatima za vašu veb lokaciju.