bg-tutorials

Cum se generează un CSR pentru un certificat de semnare a codului cu OpenSSL

Acest ghid explică modul în care este generată o cerere de semnare a certificatului (CSR) pentru un certificat de semnare a codului atunci când lucrați cu OpenSSL și, la fel de important, momentul în care această abordare nu mai este valabilă. Începând cu 1 iunie 2023, regulile pentru cheile de semnare a codului s-au schimbat, astfel încât vechiul flux de lucru bazat exclusiv pe software OpenSSL nu mai este acceptat de Autoritățile de Certificare pentru un certificat de semnare a codului public de încredere. Citiți mai întâi cerința de mai jos, apoi utilizați metoda care corespunde modului în care este stocată cheia dumneavoastră.

Important: cheile de semnare a codului trebuie să se afle pe hardware

Conform Cerințelor de bază pentru semnarea codului ale CA/Browser Forum, în vigoare de la 1 iunie 2023, cheia privată pentru fiecare certificat de semnare a codului public de încredere, atât standard (OV), cât și cu Validare Extinsă (EV), trebuie să fie generată și stocată într-un modul criptografic hardware care respectă standardul FIPS 140-2 Nivel 2, Common Criteria EAL4+, sau un standard echivalent. Cheia trebuie să fie neexportabilă. Semnarea codului EV a necesitat întotdeauna hardware; această regulă a extins aceeași protecție și la certificatele standard.

Consecința practică: o cheie privată și un CSR generate exclusiv prin software cu OpenSSL simplu pe un laptop sau server nu mai sunt acceptate pentru emiterea unui certificat de semnare a codului public de încredere. Autoritățile de Certificare au încetat să mai susțină generarea cheilor prin browser și CSR-urile software pentru aceste produse. Cheia dumneavoastră se află acum într-unul din aceste locuri:

  • Un token hardware expediat către dumneavoastră (de exemplu un YubiKey sau un eToken SafeNet/Thales). Cu metoda de livrare token + expediere, Autoritatea de Certificare generează cheia pe dispozitiv și gestionează CSR-ul, astfel încât nu creați dumneavoastră unul cu OpenSSL.
  • Un Modul de Securitate Hardware (HSM) pe care îl controlați, local sau bazat pe cloud. Aici generați cheia în interiorul HSM-ului și produceți un CSR plus o atestare a cheii care dovedește că aceasta a fost creată în hardware.
  • Un serviciu de semnare în cloud care păstrează cheia într-un HSM conform, în numele dumneavoastră.

Alegeți-vă traseul în funcție de modul în care intenționați să primiți și să stocați certificatul. Pentru o prezentare generală, consultați ghidul metode de livrare pentru semnarea codului. Pentru pașii CSR bazați pe hardware și de atestare, urmați ghidul care corespunde dispozitivului dumneavoastră:

Dacă utilizați un HSM diferit, generați CSR-ul cu instrumentele acelui furnizor, astfel încât cheia să rămână în hardware. Comanda OpenSSL req prezentată mai jos are încă un rol în aceste fluxuri de lucru atunci când OpenSSL controlează HSM-ul printr-un furnizor sau motor (engine), dar trebuie să facă referire la o cheie care se află deja în modul, niciodată la un simplu fișier de cheie software, pentru un certificat public de încredere.

Când se aplică în continuare metoda software OpenSSL

Fluxul de lucru software de mai jos produce un fișier de cheie pe disc. Acest lucru este acceptabil doar pentru cazurile care nu sunt un certificat de semnare a codului public de încredere, cum ar fi:

  • Semnarea internă sau de test cu o CA privată/de întreprindere, unde propria dumneavoastră politică, nu regulile publice ale CA/Browser Forum, guvernează stocarea cheii.
  • Învățarea structurii comenzilor OpenSSL înainte de a trece la un token sau HSM.
  • Pregătirea detaliilor subiectului și a sintaxei comenzii pe care le veți reutiliza atunci când generați CSR-ul real folosind cheia dumneavoastră hardware.

Nu trimiteți o cheie generată prin software și un CSR unei Autorități de Certificare publice pentru un certificat de semnare a codului OV sau EV. Va fi respins. Cu această limită clarificată, iată procesul OpenSSL și comenzile implicate.

1. Descărcați și instalați OpenSSL

Dacă OpenSSL nu se află deja pe computerul dumneavoastră, descărcați o versiune actuală (OpenSSL 3.x sau mai nou) pentru sistemul dumneavoastră de operare și instalați-o. macOS și majoritatea distribuțiilor Linux includ deja OpenSSL; pe Windows instalați de obicei o versiune terță. Confirmați instalarea și versiunea cu:

openssl version

2. Deschideți un terminal și încărcați OpenSSL

Pe Windows, apăsați tasta Windows + R, tastați cmd și apăsați Enter. Pentru comenzi care scriu fișiere în foldere protejate, executați Command Prompt ca administrator: faceți clic dreapta pe pictograma Command Prompt și selectați Run as administrator. Puteți, de asemenea, să tastați cmd în bara de căutare din taskbar și să deschideți Command Prompt de acolo. Pe macOS sau Linux, deschideți aplicația de terminal.

Dacă executabilul OpenSSL nu se află în variabila de mediu path a sistemului dumneavoastră pe Windows, treceți mai întâi în folderul său de instalare, folosind calea care corespunde versiunii dumneavoastră:

cd OpenSSL-Win32bin
cd "Program FilesOpenSSL-Win64bin"

3. Generați cheia privată și CSR-ul

Mai întâi generați cheia privată. Certificatele de semnare a codului necesită o cheie puternică: utilizați RSA 3072 biți (sau mai mare), care este minimul obișnuit pentru semnarea codului, sau o cheie ECDSA pe curba P-256. Pentru a crea o cheie RSA de 3072 biți:

openssl genrsa -out code_signing_key.key 3072

Apoi generați CSR-ul din acea cheie. OpenSSL utilizează SHA-256 pentru semnătura cererii, în mod implicit, în versiunile curente:

openssl req -new -key code_signing_key.key -out code_signing_csr.txt

4. Completați câmpurile CSR

OpenSSL solicită detaliile care identifică titularul certificatului. Introduceți informații corecte și actuale, care corespund înregistrărilor legale ale organizației dumneavoastră, întrucât CA le validează. Înlocuiți exemplele cu propriile dumneavoastră detalii:

  • Țară (C): codul de țară din două litere unde este înregistrată compania dumneavoastră sau unde locuiți, de exemplu US.
  • Stat sau provincie (ST): denumirea completă a statului sau provinciei, de exemplu California.
  • Localitate (L): orașul în care este înregistrată compania dumneavoastră, de exemplu San Jose.
  • Denumirea organizației (O): denumirea oficială, legală a organizației dumneavoastră, sau numele dumneavoastră legal complet dacă certificatul este pentru o persoană fizică, de exemplu GPI Holding LLC.
  • Unitatea organizatorică (OU): departamentul care solicită certificatul, de exemplu IT. Acest câmp este opțional.
  • Nume comun (CN): denumirea legală a organizației dumneavoastră, sau numele dumneavoastră complet pentru un certificat individual. Pentru semnarea codului, Numele Comun este identitatea care apare ca editor.
  • Adresă de e-mail: o adresă de e-mail de contact validă.

Puteți lăsa necompletate câmpurile opționale parolă de provocare și numele companiei opțional: apăsați pur și simplu Enter la aceste solicitări.

Puteți combina, de asemenea, pașii 3 și 4 într-o singură comandă. Opțiunea -subj furnizează subiectul direct în linia de comandă, astfel încât OpenSSL nu mai solicită informații, iar -nodes lasă cheia necriptată pe disc (OpenSSL 3.x a redenumit această opțiune în -noenc, dar -nodes funcționează încă). Rețineți că valoarea folosește ghilimele drepte, nu curbate, și că întregul șir este cuprins într-o singură pereche de ghilimele:

openssl req -new -newkey rsa:3072 -nodes -keyout code_signing_key.key -out code_signing_csr.txt -subj "/C=US/ST=California/L=San Jose/O=GPI Holding LLC/OU=IT/CN=GPI Holding LLC"

5. Verificați CSR-ul

Înainte de a trimite ceva, confirmați că CSR-ul este valid și că detaliile sale sunt corecte. Această comandă afișează subiectul decodat și verifică semnătura cererii:

openssl req -noout -text -verify -in code_signing_csr.txt

Verificați dacă linia Subject listează țara, organizația și numele comun exact așa cum intenționați, dacă dimensiunea cheii publice este de 3072 biți sau mai mult (sau o cheie ECDSA), și dacă algoritmul de semnătură este SHA-256. Ar trebui, de asemenea, să vedeți un mesaj verify OK, care confirmă că CSR-ul a fost semnat de cheia sa privată corespunzătoare.

6. Mutați cheia privată și CSR-ul într-un director sigur

Mutați cheia privată și CSR-ul din folderul OpenSSL într-un director pe care îl controlați. Păstrați cheia privată secretă și nu o partajați niciodată cu nimeni din afara organizației dumneavoastră: orice persoană care o deține poate semna software în numele dumneavoastră. Pe Windows, creați un folder și mutați fișierele în el:

md c:codesigningcertificates
move code_signing_key.key c:codesigningcertificates
move code_signing_csr.txt c:codesigningcertificates

7. Trimiteți CSR-ul către CA-ul dumneavoastră

Deschideți fișierul CSR într-un editor de text simplu, cum ar fi Notepad, și copiați întregul său conținut, inclusiv liniile ––BEGIN CERTIFICATE REQUEST–– și ––END CERTIFICATE REQUEST––, în formularul de înscriere din timpul comenzii certificatului dumneavoastră. Un bloc CSR are următorul aspect:

-----BEGIN CERTIFICATE REQUEST-----
MIICvDCCAaQCAQAw...
...base64 encoded request...
-----END CERTIFICATE REQUEST-----

Rețineți regula de la începutul acestui ghid: pentru un certificat de semnare a codului public de încredere, CSR-ul pe care îl trimiteți trebuie să corespundă unei chei generate și păstrate într-un hardware conform. Dacă ați generat o cheie software cu pașii de mai sus, utilizați-o doar pentru semnarea internă sau de test. Pentru o comandă la o CA publică, generați CSR-ul de pe tokenul sau HSM-ul dumneavoastră folosind ghidul YubiKey sau Luna HSM, sau lăsați CA-ul să genereze cheia atunci când alegeți metoda de livrare token + expediere.

Pentru sintaxa generală OpenSSL, dincolo de crearea CSR-ului, ghidul comenzi OpenSSL este un material de referință util. Puteți explora și mai multe tutoriale OpenSSL și tutoriale de semnare a codului, sau puteți citi despre alte moduri de a genera un CSR.

Economisește 10% la certificatele SSL în momentul plasării comenzii!

Eliberare rapidă, criptare puternică, încredere în browser de 99,99%, suport dedicat și garanție de returnare a banilor în 25 de zile. Codul cuponului: SAVE10

A detailed image of a dragon in flight

Autor cu experiență, specializat în certificate SSL. Transformă subiectele complexe despre securitatea cibernetică în conținut clar și captivant. Contribuie la îmbunătățirea securității digite prin narațiuni cu impact.