Creearea unui certificat
Pentru a actiona ca un root CA, va trebui sa creeam certificatul. Fisierul ca.key
contine cheia privata a CA-ului, pe cand ca.crt este certificatul public.
openssl req -new -x509 -keyout ca.key -out ca.crt
Va trebui sa completati toate campurile. La domain puneti
upb-cert-sign.com
Acum putem actiona ca un root CA, suntem gata să semnăm certificate digitale pentru clienții noștri.
Primul nostru client este o companie ce vrea sa administreze domeniul
vine-vacanta.com. Pentru ca această companie să obțină un certificat digital de
la o Autoritate de Certificare, trebuie să parcurgă trei pași.
-
Generarea unei perechi de chei publica/privata. Compania trebuie mai întâi să-și creeze propria pereche de chei public/privat. Putem rula următoarea comandă pentru a genera o pereche de chei RSA (atât cheia privată, cât și cea publică). De asemenea, vi se va solicita să furnizați o parolă pentru a cripta cheia privată (folosind algoritmul de criptare AES-128, așa cum este specificat în opțiunea de comandă). Cheile vor fi stocate în fișierul server.key.
$ openssl genrsa -aes128 -out server.key 2048Pentru a vedea continutul in format text a lui server.key puteti folosi comanda
openssl rsa -in server.key -text. -
Generarea unui Certificate Signing Request (CSR). Odată ce compania are fișierul cheie, ar trebui să genereze o Cerere de Semnare a Certificatului (CSR), care include în esență cheia publică a companiei. CSR va fi trimisă Autorității de Certificare, care va genera un certificat pentru cheie (de obicei, după ce se asigură că informațiile de identitate din CSR corespund cu adevărata identitate a serverului). Vom folosi
vine-vacanta.comca nume comun al cererii de certificat.$ openssl req -new -key server.key -out server.csrVa trebui sa completati toate campurile.
-
Generarea certificatelor. Fișierul CSR trebuie să aibă semnătura Autorității de Certificare pentru a forma un certificat. În lumea reală, fișierele CSR sunt de obicei trimise unei Autorități de Certificare de încredere pentru semnătura lor. În acest laborator, vom folosi propria noastră Autoritate de Certificare de încredere pentru a genera certificate. Următoarea comandă transformă cererea de semnătură a certificatului (server.csr) într-un certificat X509 (server.crt), folosind ca.crt și ca.key ale Autorității de Certificare:
$ sudo openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.keyCel mai probabil o sa primiti o eroare legata de lipsa unui fisier
index.txtsiserial. Va trebui sa le creati astfel (atentie, directorul poate fi diferit)sudo touch /etc/pki/CA/index.txt sudo echo "1000" > /etc/pki/CA/serialPe unele versiuni de Ubuntu/Debian, OpenSSL se așteaptă ca aceste fișiere să existe sub directorul
demoCAdin folderul curent, iar în el să existe subdirectorulnewcerts. În acest caz, problema se rezolva cu următoarele comenzi:mkdir -p demoCA/newcerts touch demoCA/index.txt echo "1000" > demoCA/serialPână la acest moment, ierarhia de fișiere ar trebui să arate ca mai jos:
dorinel@new-buntu:~/pki$ tree -F ./ ├── ca.crt ├── ca.key ├── demoCA/ │ ├── index.txt │ ├── newcerts/ │ └── serial ├── server.csr └── server.key 3 directories, 6 files
Exercitiu 3. Generati un certificat pentru domeniul vine-vacanta.com. Vom adauga
urmatoarea intrare in /etc/hosts pentru a il face pe Linux sa faca legatura
dintre vine-vacanta.com si 127.0.0.1.
Pentru a putea folosi certificatul in directorul curent, vom rula:
openssl x509 -in server.crt -noout -subject_hash
127.0.0.1 vine-vacanta.com