Cum se instalează și se configurează o autoritate de certificare (CA) pe Ubuntu 20.04

Introducere

O autoritate de certificare (CA) este o entitate responsabilă cu emiterea de certificate digitale pentru a verifica identitățile pe internet. Deși CA-urile publice sunt o alegere populară pentru verificarea identității site-urilor web și a altor servicii care sunt furnizate publicului larg, CA-urile private sunt utilizate de obicei pentru grupuri închise și servicii private.

Crearea unei autorități de certificare private vă va permite să configurați, să testați și să rulați programe care necesită conexiuni criptate între un client și un server. Cu o autoritate de certificare privată, puteți emite certificate pentru utilizatori, servere sau programe și servicii individuale din cadrul infrastructurii dumneavoastră.

Câteva exemple de programe pe Linux care utilizează propria lor autoritate de certificare privată sunt OpenVPN și Puppet . De asemenea, puteți configura serverul dvs. web pentru a utiliza certificate emise de o CA privată pentru a face ca mediile de dezvoltare și de staging să se potrivească cu serverele de producție care utilizează TLS pentru a cripta conexiunile.

În acest ghid, vom învăța cum să configurăm o autoritate de certificare privată pe un server Ubuntu 20.04 și cum să generăm și să semnăm un certificat de testare utilizând noua CA. De asemenea, veți învăța cum să importați certificatul public al serverului CA în magazinul de certificate al sistemului de operare, astfel încât să puteți verifica lanțul de încredere dintre CA și serverele sau utilizatorii de la distanță. În cele din urmă, veți învăța cum să revocați certificatele și să distribuiți o listă de revocare a certificatelor pentru a vă asigura că numai utilizatorii și sistemele autorizate pot utiliza serviciile care se bazează pe CA-ul dumneavoastră.

Precondiții

Pentru a finaliza acest tutorial, veți avea nevoie de acces la un server Ubuntu 20.04 pentru a găzdui serverul CA. Va trebui să configurați un utilizator non-root cu privilegii sudo înainte de a începe acest ghid. Puteți urma ghidul nostru de configurare inițială a serverului Ubuntu 20.04 pentru a configura un utilizator cu permisiuni corespunzătoare. Tutorialul legat va configura, de asemenea, un firewall, care se presupune că este instalat pe tot parcursul acestui ghid.

Acest server va fi denumit serverul CA în acest tutorial.

Asigurați-vă că serverul CA este un sistem independent. Acesta va fi utilizat doar pentru a importa, semna și revoca cereri de certificate. Nu ar trebui să ruleze alte servicii și, în mod ideal, va fi deconectat sau complet închis atunci când nu lucrați în mod activ cu CA-ul dumneavoastră.

Nota: Ultima secțiune a acestui tutorial este opțională dacă doriți să învățați despre semnarea și revocarea certificatelor. Dacă alegeți să parcurgeți acești pași de practică, veți avea nevoie de un al doilea server Ubuntu 20.04 sau puteți, de asemenea, să folosiți propriul computer Linux local care rulează Ubuntu sau Debian, sau distribuții derivate din oricare dintre acestea.

Pasul 1 – Instalarea Easy-RSA

Prima sarcină din acest tutorial este să instalați setul de scripturi easy-rsa pe serverul dvs. de AC. easy-rsa este un instrument de gestionare a autorității de certificare pe care îl veți folosi pentru a genera o cheie privată și un certificat public root, pe care le veți folosi apoi pentru a semna cererile de la clienții și serverele care se vor baza pe CA-ul dumneavoastră.

Intrați pe serverul CA ca utilizator sudo non-root pe care l-ați creat în timpul etapelor inițiale de configurare și rulați următoarele:

  • sudo apt update
  • sudo apt install easy-rsa

Vă va fi solicitat să descărcați pachetul și să îl instalați. Apăsați y pentru a confirma că doriți să instalați pachetul.

În acest moment aveți tot ce vă trebuie configurat și sunteți gata să utilizați Easy-RSA. În pasul următor veți crea o Infrastructură de Cheie Publică și apoi veți începe să vă construiți Autoritatea de Certificare.

Pasul 2 – Pregătirea unui Director de Infrastructură de Cheie Publică

Acum că ați instalat easy-rsa, este timpul să creați un schelet de Infrastructură de Cheie Publică (PKI) pe serverul CA. Asigurați-vă că sunteți încă autentificat ca utilizator non-root și creați un director easy-rsa. Asigurați-vă că nu utilizați sudo pentru a rula niciuna dintre următoarele comenzi, deoarece utilizatorul dumneavoastră normal ar trebui să gestioneze și să interacționeze cu CA fără privilegii ridicate.

  • mkdir ~/easy-rsa

Aceasta va crea un nou director numit easy-rsa în dosarul dumneavoastră personal. Vom folosi acest director pentru a crea legături simbolice care să arate spre fișierele pachetului easy-rsa pe care le-am instalat în pasul anterior. Aceste fișiere se află în folderul /usr/share/easy-rsa de pe serverul CA.

Crearea legăturilor simbolice cu comanda ln:

  • ln -s /usr/share/easy-rsa/* ~/easy-rsa/

Nota: În timp ce alte ghiduri vă pot indica să copiați fișierele pachetului easy-rsa în directorul PKI, acest tutorial adoptă o abordare prin legături simbolice. Ca urmare, orice actualizare a pachetului easy-rsa va fi reflectată automat în scripturile PKI-ului dumneavoastră.

Pentru a restricționa accesul la noul dvs. director PKI, asigurați-vă că numai proprietarul îl poate accesa folosind comanda chmod:

  • chmod 700 /home/sammy/easy-rsa

În cele din urmă, inițializați PKI în interiorul directorului easy-rsa:

  • cd ~/easy-rsa
  • ./easyrsa init-pki
Output
init-pki complete; you may now create a CA or requests.Your newly created PKI dir is: /home/sammy/easy-rsa/pki

După finalizarea acestei secțiuni, aveți un director care conține toate fișierele necesare pentru a crea o autoritate de certificare. În secțiunea următoare veți crea cheia privată și certificatul public pentru autoritatea dumneavoastră de certificare.

Pasul 3 – Crearea unei autorități de certificare

Înainte de a crea cheia privată și certificatul autorității dumneavoastră de certificare, trebuie să creați și să completați un fișier numit vars cu câteva valori implicite. Mai întâi veți cd în directorul easy-rsa, apoi veți crea și edita fișierul vars cu nano sau cu editorul de text preferat:

  • cd ~/easy-rsa
  • nano vars

După ce fișierul este deschis, inserați următoarele linii și editați fiecare valoare evidențiată pentru a reflecta informațiile organizației dvs. proprii. Partea importantă aici este să vă asigurați că nu lăsați niciuna dintre valori goale:

~/easy-rsa/vars
set_var EASYRSA_REQ_COUNTRY "US"set_var EASYRSA_REQ_PROVINCE "NewYork"set_var EASYRSA_REQ_CITY "New York City"set_var EASYRSA_REQ_ORG "DigitalOcean"set_var EASYRSA_REQ_EMAIL "[email protected]"set_var EASYRSA_REQ_OU "Community"set_var EASYRSA_ALGO "ec"set_var EASYRSA_DIGEST "sha512"

Când ați terminat, salvați și închideți fișierul. Dacă utilizați nano, puteți face acest lucru apăsând CTRL+X, apoi Y și ENTER pentru a confirma. Sunteți acum gata să vă construiți autoritatea de certificare.

Pentru a crea perechea de chei publice și private rădăcină pentru autoritatea de certificare, rulați din nou comanda ./easy-rsa, de data aceasta cu opțiunea build-ca:

  • ./easyrsa build-ca

În ieșire, veți vedea câteva rânduri despre versiunea OpenSSL și vi se va cere să introduceți o frază de acces pentru perechea de chei. Asigurați-vă că alegeți o frază de trecere puternică și notați-o într-un loc sigur. Va trebui să introduceți fraza de trecere de fiecare dată când va trebui să interacționați cu CA-ul dumneavoastră, de exemplu pentru a semna sau revoca un certificat.

Vă va fi, de asemenea, solicitat să confirmați numele comun (CN) pentru CA-ul dumneavoastră. CN este numele utilizat pentru a se referi la această mașină în contextul autorității de certificare. Puteți introduce orice șir de caractere pentru numele comun al CA, dar, de dragul simplității, apăsați ENTER pentru a accepta numele implicit.

Output
. . .Enter New CA Key Passphrase:Re-Enter New CA Key Passphrase:. . .Common Name (eg: your user, host, or server name) :CA creation complete and you may now import and sign cert requests.Your new CA certificate file for publishing is at:/home/sammy/easy-rsa/pki/ca.crt

Nota: Dacă nu doriți să vi se ceară o parolă de fiecare dată când interacționați cu AC, puteți rula comanda build-ca cu opțiunea nopass, astfel:

  • ./easyrsa build-ca nopass

Acum aveți două fișiere importante – ~/easy-rsa/pki/ca.crt și ~/easy-rsa/pki/private/ca.key – care alcătuiesc componentele publică și privată ale unei autorități de certificare.

  • ca.crt este fișierul de certificat public al AC. Utilizatorii, serverele și clienții vor folosi acest certificat pentru a verifica dacă fac parte din aceeași rețea de încredere. Fiecare utilizator și server care utilizează CA-ul dumneavoastră va trebui să aibă o copie a acestui fișier. Toate părțile se vor baza pe certificatul public pentru a se asigura că cineva nu se substituie unui sistem și nu efectuează un atac Man-in-the-middle.

  • ca.key este cheia privată pe care CA o folosește pentru a semna certificatele pentru servere și clienți. Dacă un atacator obține acces la CA și, la rândul său, la fișierul ca.key, va trebui să vă distrugeți CA. Acesta este motivul pentru care fișierul ca.key ar trebui să se afle numai pe calculatorul CA și că, în mod ideal, calculatorul CA ar trebui să fie ținut offline atunci când nu semnează cereri de certificate, ca o măsură de securitate suplimentară.

Cu aceasta, CA-ul dvs. este în funcțiune și este gata să fie folosit pentru a semna cereri de certificate și pentru a revoca certificate.

Pasul 4 – Distribuirea certificatului public al autorității dvs. de certificare

Acum, AC dvs. este configurată și pregătită să acționeze ca rădăcină de încredere pentru orice sistem pe care doriți să îl configurați pentru a-l utiliza. Puteți adăuga certificatul AC la serverele OpenVPN, serverele web, serverele de poștă electronică și așa mai departe. Orice utilizator sau server care trebuie să verifice identitatea unui alt utilizator sau server din rețeaua dvs. ar trebui să aibă o copie a fișierului ca.crt importată în stocul de certificate al sistemului lor de operare.

Pentru a importa certificatul public al AC într-un al doilea sistem Linux, cum ar fi un alt server sau un computer local, obțineți mai întâi o copie a fișierului ca.crt de la serverul dvs. de AC. Puteți utiliza comanda cat pentru a-l scoate într-un terminal, apoi îl puteți copia și lipi într-un fișier de pe al doilea computer care importă certificatul. De asemenea, puteți utiliza instrumente precum scp, rsync pentru a transfera fișierul între sisteme. Cu toate acestea, vom folosi copy and paste cu nano în acest pas, deoarece va funcționa pe toate sistemele.

În calitate de utilizator non-root pe serverul CA, rulați următoarea comandă:

  • cat ~/easy-rsa/pki/ca.crt

În terminalul dvs. va apărea o ieșire similară cu următoarea:

Output
-----BEGIN CERTIFICATE-----MIIDSzCCAjOgAwIBAgIUcR9Crsv3FBEujrPZnZnU4nSb5TMwDQYJKoZIhvcNAQELBQAwFjEUMBIGA1UEAwwLRWFzeS1SU0EgQ0EwHhcNMjAwMzE4MDMxNjI2WhcNMzAw. . .. . .-----END CERTIFICATE-----

Copiați totul, inclusiv liniile -----BEGIN CERTIFICATE----- și -----END CERTIFICATE----- și liniuțele.

Pe cel de-al doilea sistem Linux folosiți nano sau editorul de text preferat pentru a deschide un fișier numit /tmp/ca.crt:

  • nano /tmp/ca.crt

Pasați în editor conținutul pe care tocmai l-ați copiat de pe serverul CA. Când ați terminat, salvați și închideți fișierul. Dacă utilizați nano, puteți face acest lucru apăsând CTRL+X, apoi Y și ENTER pentru a confirma.

Acum că aveți o copie a fișierului ca.crt pe cel de-al doilea sistem Linux, este timpul să importați certificatul în magazinul de certificate al sistemului său de operare.

Pe sistemele bazate pe Ubuntu și Debian, rulați următoarele comenzi ca utilizator non-root pentru a importa certificatul:

Distribuții derivate din Ubuntu și Debian
  • sudo cp /tmp/ca.crt /usr/local/share/ca-certificates/
  • sudo update-ca-certificates

Pentru a importa certificatul serverului CA pe sistemul bazat pe CentOS, Fedora sau RedHat, copiați și lipiți conținutul fișierului pe sistem la fel ca în exemplul anterior, într-un fișier numit /tmp/ca.crt. Apoi, veți copia certificatul în /etc/pki/ca-trust/source/anchors/, apoi veți rula comanda update-ca-trust.

Distribuții CentOS, Fedora, RedHat
  • sudo cp /tmp/ca.crt /etc/pki/ca-trust/source/anchors/
  • sudo update-ca-trust

Acum, al doilea sistem Linux va avea încredere în orice certificat care a fost semnat de serverul CA.

Nota: Dacă utilizați CA-ul cu servere web și folosiți Firefox ca browser, va trebui să importați certificatul public ca.crt direct în Firefox. Firefox nu utilizează magazinul de certificate al sistemului de operare local. Pentru detalii despre cum să adăugați certificatul CA-ului dvs. în Firefox, vă rugăm să consultați acest articol de suport de la Mozilla privind configurarea autorităților de certificare (CA) în Firefox.

Dacă utilizați CA-ul dvs. pentru a vă integra cu un mediu Windows sau cu computere desktop, vă rugăm să consultați documentația despre cum să utilizați certutil.exe pentru a instala un certificat CA.

Dacă utilizați acest tutorial ca o condiție prealabilă pentru un alt tutorial sau sunteți familiarizat cu modul de semnare și revocare a certificatelor, vă puteți opri aici. Dacă doriți să aflați mai multe despre cum să semnați și să revocați certificate, atunci următoarea secțiune opțională va explica fiecare proces în detaliu.

(Opțional) – Crearea cererilor de semnare a certificatelor și revocarea certificatelor

Secțiunile următoare ale tutorialului sunt opționale. Dacă ați finalizat toți pașii anteriori, atunci aveți o autoritate de certificare complet configurată și funcțională pe care o puteți utiliza ca o condiție prealabilă pentru alte tutoriale. Puteți importa fișierul ca.crt al autorității dumneavoastră de certificare și puteți verifica certificatele din rețeaua dumneavoastră care au fost semnate de autoritatea dumneavoastră de certificare.

Dacă doriți să exersați și să învățați mai multe despre cum să semnați cereri de certificate și cum să revocați certificate, atunci aceste secțiuni opționale vă vor explica cum funcționează ambele procese.

(Opțional) – Crearea și semnarea unei cereri de certificat de practică

Acum că aveți o AC gata de utilizare, puteți exersa generarea unei chei private și a unei cereri de certificat pentru a vă familiariza cu procesul de semnare și distribuire.

O cerere de semnare a unui certificat (CSR) este formată din trei părți: o cheie publică, informații de identificare despre sistemul solicitant și o semnătură a cererii în sine, care este creată folosind cheia privată a părții solicitante. Cheia privată va fi păstrată secretă și va fi folosită pentru a cripta informații pe care oricine care are certificatul public semnat le poate apoi decripta.

Pasii următori vor fi executați pe al doilea sistem Ubuntu sau Debian, sau pe o distribuție care este derivată din oricare dintre acestea. Acesta poate fi un alt server la distanță sau o mașină Linux locală, cum ar fi un laptop sau un computer de birou. Deoarece easy-rsa nu este disponibil în mod implicit pe toate sistemele, vom folosi instrumentul openssl pentru a crea o cheie privată și un certificat de practică.

openssl Este de obicei instalat în mod implicit pe majoritatea distribuțiilor Linux, dar pentru a fi siguri, rulați următoarele pe sistemul dumneavoastră:

  • sudo apt update
  • sudo apt install openssl

Când vi se cere să instalați openssl introduceți y pentru a continua cu pașii de instalare. Acum sunteți gata să creați un CSR practic cu openssl.

Primul pas pe care trebuie să îl parcurgeți pentru a crea un CSR este generarea unei chei private. Pentru a crea o cheie privată cu openssl, creați un director practice-csr și apoi generați o cheie în interiorul acestuia. Vom face această cerere pentru un server fictiv numit sammy-server, spre deosebire de crearea unui certificat care este folosit pentru a identifica un utilizator sau o altă AC.

  • mkdir ~/practice-csr
  • cd ~/practice-csr
  • openssl genrsa -out sammy-server.key
Output
Generating RSA private key, 2048 bit long modulus (2 primes). . .. . .e is 65537 (0x010001)

Acum că aveți o cheie privată, puteți crea un CSR corespunzător, folosind din nou utilitarul openssl. Vi se va cere să completați o serie de câmpuri, cum ar fi Țara, Statul și Orașul. Puteți introduce un . dacă doriți să lăsați un câmp gol, dar țineți cont de faptul că, dacă acesta ar fi un CSR real, cel mai bine este să folosiți valorile corecte pentru locația și organizația dumneavoastră:

  • openssl req -new -key sammy-server.key -out sammy-server.req
Output
. . .-----Country Name (2 letter code) :USState or Province Name (full name) :New YorkLocality Name (eg, city) :New York CityOrganization Name (eg, company) :DigitalOceanOrganizational Unit Name (eg, section) :CommunityCommon Name (eg, your name or your server's hostname) :sammy-serverEmail Address :Please enter the following 'extra' attributesto be sent with your certificate requestA challenge password :An optional company name :

Dacă doriți să adăugați automat aceste valori ca parte a invocării openssl în loc să le adăugați prin intermediul promptului interactiv, puteți trece argumentul -subj către OpenSSL. Asigurați-vă că editați valorile evidențiate pentru a se potrivi cu locația cabinetului dumneavoastră, organizația și numele serverului:

  • openssl req -new -key sammy-server.key -out server.req -subj \
  • /C=US/ST=New\ York/L=New\ York\ City/O=DigitalOcean/OU=Community/CN=sammy-server

Pentru a verifica conținutul unui CSR, puteți citi un fișier de cerere cu openssl și examina câmpurile din interior:

  • openssl req -in sammy-server.req -noout -subject
Output
subject=C = US, ST = New York, L = New York City, O = DigitalOcean, OU = Community, CN = sammy-server

După ce sunteți mulțumit de subiectul cererii de certificat al cabinetului dumneavoastră, copiați fișierul sammy-server.req pe serverul CA folosind scp:

  • scp sammy-server.req sammy@your_ca_server_ip:/tmp/sammy-server.req

În acest pas ați generat o cerere de semnare a certificatului pentru un server fictiv numit sammy-server. Într-un scenariu din lumea reală, cererea ar putea proveni de la ceva de genul unui server web de staționare sau de dezvoltare care are nevoie de un certificat TLS pentru testare; sau ar putea veni de la un server OpenVPN care solicită un certificat pentru ca utilizatorii să se poată conecta la un VPN. În etapa următoare, vom trece la semnarea cererii de semnare a certificatului folosind cheia privată a serverului CA.

(Opțional) – Semnarea unui CSR

În pasul anterior, ați creat o cerere de certificat de practică și o cheie pentru un server fictiv. Ați copiat-o în directorul /tmp de pe serverul CA, emulând procesul pe care l-ați folosi dacă ați avea clienți sau servere reale care vă trimit cereri CSR care trebuie semnate.

Continuând cu scenariul fictiv, acum serverul CA trebuie să importe certificatul de practică și să îl semneze. Odată ce o cerere de certificat este validată de către CA și retransmisă către un server, clienții care au încredere în autoritatea de certificare vor putea, de asemenea, să aibă încredere în certificatul nou emis.

Din moment ce vom opera în interiorul PKI al CA, unde este disponibil utilitarul easy-rsa, etapele de semnare vor folosi utilitarul easy-rsa pentru a ușura lucrurile, spre deosebire de utilizarea directă a openssl, așa cum am făcut în exemplul anterior.

Primul pas pentru a semna CSR-ul fictiv este să importați cererea de certificat folosind scriptul easy-rsa:

  • cd ~/easy-rsa
  • ./easyrsa import-req /tmp/sammy-server.req sammy-server
Output
. . .The request has been successfully imported with a short name of: sammy-serverYou may now use this name to perform signing operations on this request.

Acum puteți semna cererea prin rularea scriptului easyrsa cu opțiunea sign-req, urmată de tipul de cerere și de numele comun care este inclus în CSR. Tipul de cerere poate fi unul dintre client, server sau ca. Deoarece exersăm cu un certificat pentru un server fictiv, asigurați-vă că folosiți tipul de cerere server:

  • ./easyrsa sign-req server sammy-server

În ieșire, vi se va cere să verificați dacă cererea provine dintr-o sursă de încredere. Tastați yes apoi apăsați ENTER pentru a confirma acest lucru:

Output
You are about to sign the following certificate.Please check over the details shown below for accuracy. Note that this requesthas not been cryptographically verified. Please be sure it came from a trustedsource or that you have verified the request checksum with the sender.Request subject, to be signed as a server certificate for 3650 days:subject= commonName = sammy-serverType the word 'yes' to continue, or any other input to abort. Confirm request details: yes. . .Certificate created at: /home/sammy/easy-rsa/pki/issued/sammy-server.crt

Dacă v-ați criptat cheia CA, vi se va cere parola în acest moment.

Cu acești pași finalizați, ați semnat sammy-server.req CSR-ul sammy-server.req folosind cheia privată a serverului CA din /home/sammy/easy-rsa/pki/private/ca.key. Fișierul sammy-server.crt rezultat conține cheia publică de criptare a serverului de practică, precum și o nouă semnătură de la serverul CA. Scopul semnăturii este de a spune tuturor celor care au încredere în CA că pot avea încredere și în certificatul sammy-server.

Dacă această cerere a fost pentru un server real, cum ar fi un server web sau un server VPN, ultimul pas pe serverul CA ar fi distribuirea noilor fișiere sammy-server.crt și ca.crt de la serverul CA către serverul de la distanță care a făcut cererea CSR:

  • scp pki/issued/sammy-server.crt sammy@your_server_ip:/tmp
  • scp pki/ca.crt sammy@your_server_ip:/tmp

În acest moment, veți putea utiliza certificatul emis cu ceva precum un server web, un VPN, un instrument de gestionare a configurației, un sistem de baze de date sau în scopul autentificării clienților.

(Opțional) – Revocarea unui certificat

Ocazional, este posibil să fie nevoie să revocați un certificat pentru a împiedica un utilizator sau un server să îl folosească. Poate că laptopul cuiva a fost furat, un server web a fost compromis sau un angajat sau contractant a părăsit organizația dumneavoastră.

Pentru a revoca un certificat, procesul general urmează următorii pași:

  1. Revocați certificatul cu comanda ./easyrsa revoke client_name.
  2. Generați o nouă CRL cu comanda ./easyrsa gen-crl.
  3. Transferați fișierul crl.pem actualizat către serverul sau serverele care se bazează pe CA-ul dvs. și, pe aceste sisteme, copiați-l în directorul sau directoarele necesare pentru programele care fac referire la acesta.
  4. Reporniți orice servicii care utilizează CA-ul dvs. și fișierul CRL.

Puteți utiliza acest proces pentru a revoca orice certificat pe care l-ați emis anterior în orice moment. Vom trece în revistă fiecare pas în detaliu în secțiunile următoare, începând cu comanda revoke.

Revocarea unui certificat

Pentru a revoca un certificat, navigați în directorul easy-rsa de pe serverul CA:

  • cd ~/easy-rsa

În continuare, rulați scriptul easyrsa cu opțiunea revoke, urmată de numele clientului pe care doriți să-l revocați. Urmând exemplul practic de mai sus, numele comun al certificatului este sammy-server:

  • ./easyrsa revoke sammy-server

Acesta vă va cere să confirmați revocarea introducând yes:

Output
Please confirm you wish to revoke the certificate with the following subject:subject= commonName = sammy-serverType the word 'yes' to continue, or any other input to abort. Continue with revocation: yes. . .Revoking Certificate 8348B3F146A765581946040D5C4D590A. . .

Rețineți valoarea evidențiată pe linia Revoking Certificate. Această valoare este numărul de serie unic al certificatului care este revocat. Dacă doriți să examinați lista de revocare în ultimul pas al acestei secțiuni pentru a verifica dacă certificatul se află în ea, veți avea nevoie de această valoare.

După confirmarea acțiunii, AC va revoca certificatul. Cu toate acestea, sistemele la distanță care se bazează pe AC nu au nicio modalitate de a verifica dacă vreun certificat a fost revocat. Utilizatorii și serverele vor putea în continuare să folosească certificatul până când lista de revocare a certificatelor (CRL) a AC este distribuită tuturor sistemelor care se bazează pe AC.

În pasul următor veți genera o CRL sau veți actualiza un fișier crl.pem existent.

Generarea unei liste de revocare a certificatelor

Acum că ați revocat un certificat, este important să actualizați lista de certificate revocate pe serverul AC. Odată ce aveți o listă de revocare actualizată, veți putea spune ce utilizatori și sisteme au certificate valabile în CA-ul dumneavoastră.

Pentru a genera o CRL, rulați comanda easy-rsa cu opțiunea gen-crl în timp ce vă aflați încă în interiorul directorului ~/easy-rsa:

  • ./easyrsa gen-crl

Dacă ați folosit o frază de acces atunci când ați creat fișierul ca.key, vi se va cere să o introduceți. Comanda gen-crl va genera un fișier numit crl.pem, care conține lista actualizată a certificatelor revocate pentru acea AC.

În continuare, va trebui să transferați fișierul crl.pem actualizat către toate serverele și clienții care se bazează pe această AC de fiecare dată când executați comanda gen-crl. În caz contrar, clienții și sistemele vor putea în continuare să acceseze serviciile și sistemele care utilizează CA-ul dumneavoastră, deoarece aceste servicii trebuie să știe despre starea de revocare a certificatului.

Transferul unei liste de revocare a certificatelor

Acum că ați generat o CRL pe serverul dumneavoastră CA, trebuie să o transferați către sistemele la distanță care se bazează pe CA-ul dumneavoastră. Pentru a transfera acest fișier pe serverele dumneavoastră, puteți utiliza comanda scp.

Nota: Acest tutorial explică modul în care se generează și se distribuie manual o CRL. Deși există metode mai robuste și mai automatizate de distribuire și verificare a listelor de revocare, cum ar fi OCSP-Stapling, configurarea acestor metode depășește scopul acestui articol.

Asigurați-vă că sunteți conectat la serverul AC ca utilizator non-root și rulați următoarea comandă, înlocuind IP-ul propriului server sau numele DNS în locul lui your_server_ip:

  • scp ~/easy-rsa/pki/crl.pem sammy@your_server_ip:/tmp

Acum că fișierul se află pe sistemul de la distanță, ultimul pas este să actualizați orice servicii cu noua copie a listei de revocare.

Actualizarea serviciilor care acceptă o CRL

Enumerarea pașilor pe care trebuie să îi utilizați pentru a actualiza serviciile care utilizează fișierul crl.pem depășește scopul acestui tutorial. În general, va trebui să copiați fișierul crl.pem în locația pe care serviciul o așteaptă și apoi să îl reporniți folosind systemctl.

După ce v-ați actualizat serviciile cu noul fișier crl.pem, serviciile dvs. vor fi capabile să respingă conexiunile de la clienți sau servere care folosesc un certificat revocat.

Examinarea și verificarea conținutului unei CRL

Dacă doriți să examinați un fișier CRL, de exemplu pentru a confirma o listă de certificate revocate, utilizați următoarea comandă openssl din interiorul directorului easy-rsa de pe serverul dumneavoastră CA:

  • cd ~/easy-rsa
  • openssl crl -in pki/crl.pem -noout -text

Puteți, de asemenea, să executați această comandă pe orice server sau sistem care are instalat instrumentul openssl cu o copie a fișierului crl.pem. De exemplu, dacă ați transferat fișierul crl.pem pe al doilea sistem și doriți să verificați dacă certificatul sammy-server este revocat, puteți utiliza o comandă openssl ca următoarea, înlocuind numărul de serie pe care l-ați notat mai devreme când ați revocat certificatul în locul celui evidențiat aici:

  • openssl crl -in /tmp/crl.pem -noout -text |grep -A 1 8348B3F146A765581946040D5C4D590A
Output
Serial Number: 8348B3F146A765581946040D5C4D590A Revocation Date: Apr 1 20:48:02 2020 GMT

Observați cum comanda grep este utilizată pentru a verifica numărul de serie unic pe care l-ați notat în etapa de revocare. Acum puteți verifica conținutul Listei de revocare a certificatelor pe orice sistem care se bazează pe aceasta pentru a restricționa accesul la utilizatori și servicii.

Concluzie

În acest tutorial ați creat o autoritate de certificare privată folosind pachetul Easy-RSA pe un server independent Ubuntu 20.04. Ați învățat cum funcționează modelul de încredere între părțile care se bazează pe AC. De asemenea, ați creat și ați semnat o cerere de semnare a certificatului (CSR) pentru un server de practică și apoi ați învățat cum se revocă un certificat. În cele din urmă, ați învățat cum să generați și să distribuiți o listă de revocare a certificatelor (Certificate Revocation List – CRL) pentru orice sistem care se bazează pe CA-ul dvs. pentru a vă asigura că utilizatorii sau serverele care nu ar trebui să acceseze servicii sunt împiedicate să facă acest lucru.

Acum puteți emite certificate pentru utilizatori și le puteți utiliza cu servicii precum OpenVPN. De asemenea, puteți utiliza CA-ul dvs. pentru a configura serverele web de dezvoltare și de staționare cu certificate pentru a vă securiza mediile care nu sunt de producție. Utilizarea unei CA cu certificate TLS în timpul dezvoltării vă poate ajuta să vă asigurați că codul și mediile dvs. se potrivesc cât mai bine cu mediul dvs. de producție.

Dacă doriți să aflați mai multe despre cum să folosiți OpenSSL, puteți accesa pagina noastră OpenSSL Essentials: Tutorialul Lucrul cu certificatele SSL, cheile private și CSR-urile are o mulțime de informații suplimentare pentru a vă ajuta să vă familiarizați mai bine cu elementele fundamentale ale OpenSSL.

Lasă un răspuns

Adresa ta de email nu va fi publicată.