bg-tutorials

Cum să generezi un CSR în Windows

Acest ghid vă arată cum să generați un CSR (Certificate Signing Request) pe Windows folosind instrumentele incluse în sistemul de operare.

CSR-ul este un bloc de text PKCS #10 care transmite cheia dvs. publică și detaliile subiectului către Autoritatea de Certificare, care îl semnează și returnează certificatul dvs. SSL/TLS. Cheia privată asociată rămâne pe mașina care generează cererea.

Windows vă oferă trei metode native de a construi un CSR, iar fiecare este acoperită mai jos. Alegeți-o pe cea care se potrivește fluxului dvs. de lucru:

  • Snap-in-ul Certificates MMC (grafic), care vă ghidează printr-un asistent și vă permite să adăugați un Subject Alternative Name. Acesta este traseul acoperit în tutorialul original și cel pe care majoritatea utilizatorilor îl doresc.
  • Instrumentul de linie de comandă certreq.exe cu un fișier INF, care poate fi scriptat, suportă SAN și este metoda standard pe Windows Server.
  • Binarul OpenSSL pentru Windows (o descărcare separată), care produce CSR-ul exact așa cum o fac administratorii de Linux.

Dacă rulați un server web cu propriul flux de lucru pentru CSR, folosiți-l pe acela în locul pașilor generici pentru Windows: consultați ghidurile dedicate pentru IIS și Microsoft Exchange. Pașii de mai jos acoperă Windows 10, Windows 11 și Windows Server 2016 până la 2025; conectați-vă cu un cont care are drepturi de administrator local înainte de a începe.

Generați un CSR cu snap-in-ul Certificates MMC

Microsoft Management Console (MMC) este inclusă în fiecare versiune suportată de Windows și expune un asistent Create Custom Request care poate construi un CSR cu o intrare SAN. Asistentul stochează noua cheie privată în magazinul de certificate Local Computer, astfel încât orice serviciu Windows de pe mașină (IIS, ADFS, RD Gateway, RDP) poate folosi certificatul emis odată ce este instalat.

Pasul 1: Deschideți snap-in-ul MMC Certificates pentru Local Computer

Apăsați Win + R, tastați comanda de mai jos și apăsați Enter:

mmc

În consola MMC goală, deschideți File > Add/Remove Snap-in. Selectați Certificates din lista din stânga, faceți clic pe Add, alegeți Computer account, faceți clic pe Next, lăsați selectat Local computer și faceți clic pe Finish, apoi pe OK. Snap-in-ul Certificates este acum ancorat la magazinul Local Computer, de unde citesc serviciile Windows.

Pasul 2: Începeți o cerere personalizată de certificat

În panoul din stânga, extindeți Certificates (Local Computer) și faceți clic dreapta pe Personal. Alegeți All Tasks > Advanced Operations > Create Custom Request. Se deschide asistentul Certificate Enrollment. Faceți clic pe Next.

Pe ecranul Select Certificate Enrollment Policy, selectați Proceed without enrollment policy sub Custom Request și faceți clic pe Next. Astfel îi spuneți lui Windows să construiască un CSR independent pentru o CA externă, în loc să se înregistreze pe baza unui șablon intern Active Directory Certificate Services.

Pasul 3: Alegeți șablonul și formatul cererii

Pe ecranul Custom request, setați Template la (No template) CNG key, lăsați Request format pe PKCS #10 și faceți clic pe Next. CNG (Cryptography Next Generation) este furnizorul modern de chei pe Windows și este alegerea corectă pentru cereri noi; opțiunea CSP moștenită este necesară doar pentru compatibilitatea cu aplicații mai vechi.

Pe ecranul Certificate Information, extindeți săgeata Details de lângă intrarea cererii și faceți clic pe Properties. Dialogul Certificate Properties este locul unde se configurează restul CSR-ului.

Pasul 4: Completați subiectul și Subject Alternative Names

Pe fila General, tastați un nume prietenos și o descriere opțională, astfel încât să puteți identifica mai târziu cererea în așteptare din magazinul de certificate.

Treceți la fila Subject. La Subject name, lăsați Type pe Full DN doar dacă știți exact ce faceți; pentru majoritatea comenzilor, adăugați fiecare componentă pe rând folosind meniul derulant Type. Pentru fiecare atribut de mai jos, alegeți tipul, tastați valoarea și faceți clic pe Add:

  • Common Name: numele de domeniu complet calificat pe care doriți să-l securizați, de exemplu www.domeniulvostru.com. Pentru un certificat wildcard, puneți un asterisc înaintea domeniului apex, de exemplu *.domeniulvostru.com.
  • Country: codul ISO de țară din două litere, de exemplu US, GB sau DE.
  • State: numele complet al statului sau provinciei (de exemplu California, nu CA).
  • Locality: numele complet al orașului unde este înregistrată organizația dvs. (de exemplu San Jose, nu SJ).
  • Organization: numele legal al companiei dvs., exact așa cum este înregistrat. Obligatoriu pentru certificatele OV și EV. Pentru certificatele Domain Validation (DV), acest câmp este ignorat, așa că orice valoare de tip placeholder funcționează.

Omiteți atributul Email. RFC 5280 prevede că certificatele noi cu o adresă de e-mail trebuie să o plaseze în extensia Subject Alternative Name (ca rfc822Name), nu în Distinguished Name-ul subiectului, iar CA-urile publice pot elimina o valoare de e-mail din subiectul unui certificat TLS. Omițând-o, păstrați CSR-ul curat.

În secțiunea Alternative name de pe aceeași filă, setați Type la DNS și adăugați fiecare nume de gazdă pe care trebuie să-l acopere certificatul, câte un clic pe Add pentru fiecare intrare. Includeți întotdeauna aici și Common Name: browserele, .NET, Java, Go și alți clienți TLS moderni validează strict numele de gazdă în raport cu lista SAN și ignoră Common Name. Un certificat web tipic folosește două intrări DNS:

  • domeniulvostru.com
  • www.domeniulvostru.com

Pentru o comandă wildcard, adăugați atât wildcard-ul, cât și domeniul apex: *.domeniulvostru.com și domeniulvostru.com.

Pasul 5: Configurați cheia și semnătura

Treceți la fila Private Key și extindeți fiecare secțiune pe rând.

  • Cryptographic Service Provider: lăsați selectat implicit RSA, Microsoft Software Key Storage Provider. Acesta este furnizorul CNG modern pentru chei RSA.
  • Key options: setați Key size la 2048 (minimul actual impus de CA-urile publice). Alegeți 3072 sau 4096 doar dacă politica dvs. impune o cheie mai mare; compromisul este un handshake TLS ușor mai lent. Bifați Make private key exportable dacă doriți opțiunea de a face o copie de rezervă a cheii sau de a muta certificatul emis pe alt server.
  • Select Hash Algorithm: în secțiunea Select hash algorithm, alegeți sha256. SHA-1 nu mai este acceptat de CA-urile publice, iar SHA-256 este standardul modern implicit. Lăsați debifată caseta Use alternate signature format.

Faceți clic pe OK pentru a închide dialogul de proprietăți, apoi faceți clic pe Next în asistent.

Pasul 6: Salvați fișierul CSR

Pe ecranul Where do you want to save the offline request?, setați File format la Base 64 (CA-urile așteaptă un PEM codificat base64, nu binar). Faceți clic pe Browse, alegeți un folder pe care îl puteți găsi din nou (un folder dedicat C:certs sau Desktopul sunt mai ușor de accesat decât calea implicită Windows), dați fișierului un nume cu extensia .req sau .txt și faceți clic pe Save. Faceți clic pe Finish pentru a scrie CSR-ul.

Asistentul scrie CSR-ul în fișier și stochează cheia privată asociată în Certificates (Local Computer) > Certificate Enrollment Requests. Nu ștergeți acea cerere în așteptare: când CA returnează certificatul emis, Windows îl asociază automat cu cheia care așteaptă.

Pasul 7: Copiați CSR-ul și trimiteți-l către CA

Deschideți fișierul salvat în Notepad. Ar trebui să vedeți un bloc care arată astfel:

-----BEGIN NEW CERTIFICATE REQUEST-----
MIIDXjCCAkYCAQAwgZQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlh
... (many lines of base64) ...
-----END NEW CERTIFICATE REQUEST-----

Selectați întregul bloc, inclusiv liniile cu cinci cratime BEGIN NEW CERTIFICATE REQUEST și END NEW CERTIFICATE REQUEST, copiați-l și lipiți-l în câmpul CSR din formularul de comandă SSL.

Generați un CSR cu certreq.exe și un fișier INF

Utilitarul de linie de comandă certreq.exe este inclus în fiecare versiune de Windows Server și este prezent și pe clientul Windows 10 și 11. Este metoda potrivită atunci când doriți să scriptați crearea CSR-ului, să setați parametri neobișnuiți pentru cheie sau să construiți cererea de la distanță printr-o sesiune care nu poate rula MMC. Fluxul are trei părți: scrieți un fișier INF de cerere, rulați certreq -new pentru a genera CSR-ul, apoi trimiteți CSR-ul către CA-ul dvs.

Pasul 1: Creați fișierul INF de cerere

Deschideți Notepad ca Administrator și salvați fișierul de mai jos ca request.inf. Editați linia Subject și intrările DNS de sub [Extensions] pentru a se potrivi cu domeniul dvs.:

[Version]
Signature="$Windows NT$"

[NewRequest]
Subject = "CN=www.yourdomain.com, O=Your Company, L=San Jose, S=California, C=US"
KeySpec = 1
KeyLength = 2048
Exportable = TRUE
MachineKeySet = TRUE
SMIME = FALSE
PrivateKeyArchive = FALSE
UserProtected = FALSE
UseExistingKeySet = FALSE
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
ProviderType = 12
RequestType = PKCS10
KeyUsage = 0xa0
HashAlgorithm = SHA256

[EnhancedKeyUsageExtension]
OID = 1.3.6.1.5.5.7.3.1

[Extensions]
2.5.29.17 = "{text}"
_continue_ = "dns=www.yourdomain.com&"
_continue_ = "dns=yourdomain.com"

Observații privind valorile:

  • Subject: o singură linie cu componentele separate prin virgule. Folosiți codul ISO de țară din două litere la C= și scrieți numele statului și orașului în întregime.
  • KeyLength: minim 2048. Setați 3072 sau 4096 dacă politica dvs. impune o cheie mai mare.
  • Exportable = TRUE: vă permite să exportați cheia privată împreună cu certificatul emis (pentru copie de rezervă sau pentru instalare pe un al doilea server). Setați-l la FALSE dacă doriți ca cheia să rămână blocată pe această mașină.
  • MachineKeySet = TRUE: stochează cheia în magazinul Local Computer, de unde citesc servicii precum IIS. Lăsați această opțiune activă pentru sarcini de lucru pe server.
  • HashAlgorithm = SHA256: semnează cererea cu SHA-256, standardul modern implicit. Exemplele mai vechi folosesc uneori implicit SHA-1, care nu mai este acceptat de CA-urile publice.
  • 2.5.29.17: OID-ul pentru Subject Alternative Name. Adăugați câte o linie _continue_ pentru fiecare nume de gazdă; fiecare linie, cu excepția ultimei, trebuie să se termine cu separatorul &. Includeți aici și Common Name-ul dvs., deoarece clienții TLS validează în raport cu lista SAN.

Pasul 2: Generați CSR-ul

Deschideți un Command Prompt sau PowerShell ridicat, mergeți în folderul care conține request.inf și rulați:

certreq -new request.inf request.csr

Instrumentul creează cheia privată în magazinul Local Computer și scrie cererea PKCS #10 în request.csr. Deschideți fișierul, copiați întregul bloc de la BEGIN NEW CERTIFICATE REQUEST până la END NEW CERTIFICATE REQUEST și lipiți-l în formularul dvs. de comandă.

Când CA returnează certificatul emis, finalizați asocierea cu:

certreq -accept certnew.cer

Aceasta leagă certificatul emis de cheia privată care aștepta în magazin, după care certificatul devine disponibil pentru orice serviciu Windows care are nevoie de el.

Generați un CSR pe Windows cu OpenSSL

Windows nu vine cu OpenSSL preinstalat, dar o versiune Windows întreținută este disponibilă la Shining Light Productions. Fluxul OpenSSL este identic cu cel de pe Linux și produce o cheie și un CSR sub formă de două fișiere separate, ceea ce este util dacă intenționați să implementați certificatul pe o platformă care nu folosește magazinul de certificate Windows (de exemplu un proxy invers terț, Tomcat sau o aplicație personalizată).

Instalați pachetul Win64 OpenSSL Light (instalerul obișnuit este suficient pentru lucrul cu CSR) și, atunci când vi se cere, copiați DLL-urile OpenSSL în directorul bin al OpenSSL, nu în folderul de sistem Windows. Deschideți Command Prompt sau PowerShell și confirmați că OpenSSL este în PATH:

openssl version

Dacă comanda nu este găsită, fie adăugați folderul de instalare (de obicei C:Program FilesOpenSSL-Win64bin) la PATH, fie apelați openssl folosind calea completă. Apoi generați CSR-ul și cheia printr-o singură comandă:

openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr -subj "/C=US/ST=California/L=San Jose/O=Your Company/CN=www.yourdomain.com" -addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"

Ce face fiecare parametru:

  • -newkey rsa:2048 creează o cheie RSA nouă de 2048 de biți. Folosiți rsa:4096 pentru o cheie mai mare dacă politica dvs. o impune.
  • -nodes scrie cheia privată fără frază de acces, astfel încât serviciul consumator să o poată citi la pornire fără a solicita introducerea unei parole. OpenSSL 3.x a redenumit acest parametru în -noenc; -nodes încă funcționează, dar este considerat depreciat.
  • -keyout și -out denumesc fișierul cheii și fișierul CSR.
  • -subj furnizează subiectul direct în linie, astfel încât OpenSSL nu se oprește să pună întrebări interactive.
  • -addext „subjectAltName=…” adaugă lista SAN. Includeți aici și Common Name-ul.

OpenSSL 3.x semnează CSR-ul cu SHA-256 în mod implicit, deci nu este necesar niciun parametru suplimentar pentru algoritmul de hash. Rețineți antetul diferit: OpenSSL scrie -----BEGIN CERTIFICATE REQUEST-----, în timp ce asistentul MMC și certreq scriu -----BEGIN NEW CERTIFICATE REQUEST-----. Ambele sunt cereri PKCS #10 obișnuite, iar fiecare CA acceptă oricare dintre forme. Tratați fișierul rezultat yourdomain.key ca pe un secret: oricine îl deține poate folosi identitatea certificatului.

Verificați CSR-ul înainte de a-l trimite

Confirmați Common Name-ul, intrările SAN, dimensiunea cheii și algoritmul de semnătură înainte de a trimite cererea către CA-ul dvs. Din linia de comandă Windows, certutil poate citi orice fișier CSR:

certutil -dump request.csr

Dacă ați instalat OpenSSL, comanda echivalentă afișează aceleași detalii:

openssl req -noout -text -in request.csr

Preferați un browser? Lipiți conținutul cererii în decodorul de CSR al SSL Dragon pentru a citi subiectul, lista SAN, dimensiunea cheii și algoritmul de semnătură. Confirmați că Common Name-ul corespunde numelui de gazdă pe care îl vor folosi clienții, că fiecare nume necesar apare în lista SAN și că algoritmul de semnătură este sha256WithRSAEncryption (sau mai puternic).

Dacă preferați să generați CSR-ul în afara serverului, Generatorul de CSR al nostru construiește o cerere (cu SAN) dintr-un singur formular. Compromisul este că cheia privată este generată în browserul dvs., nu în magazinul Windows, astfel încât atunci când CA emite certificatul, combinați certificatul și cheia într-un fișier .pfx și îl importați prin consola de gestionare a certificatelor din aplicația dvs.

Întrebări frecvente

Ce metodă de CSR pentru Windows ar trebui să folosesc?

Dacă securizați un serviciu Windows care citește din magazinul de certificate Local Computer (IIS, ADFS, RDP, RD Gateway, WinRM), folosiți snap-in-ul MMC sau certreq.exe: ambele creează cheia în locul potrivit, astfel încât certificatul emis să fie gata de asociere. Dacă pregătiți un CSR pentru o platformă non-Windows sau doriți un fișier de cheie separat pe care să-l puteți copia pe un server Linux sau pe un dispozitiv terț, folosiți OpenSSL pe Windows. Rezultatul tuturor celor trei metode este același CSR PKCS #10, pe care îl acceptă orice CA publică.

Ar trebui să includ adresa mea de e-mail în subiectul CSR-ului?

Nu. RFC 5280 indică faptul că certificatele noi trebuie să plaseze o adresă de e-mail în extensia Subject Alternative Name ca rfc822Name, nu în Distinguished Name-ul subiectului. CA-urile publice pot elimina o valoare de e-mail din subiectul unui certificat TLS în timpul emiterii, astfel încât adăugarea ei nu are niciun rost pentru HTTPS. Nu includeți câmpul Email în asistent sau în fișierul INF.

Unde se află cheia privată după ce creez CSR-ul pe Windows?

Cu snap-in-ul MMC sau cu certreq.exe, cheia se află în Certificates (Local Computer) > Certificate Enrollment Requests ca o cerere în așteptare și este asociată automat cu certificatul emis atunci când finalizați înregistrarea. Cu OpenSSL, cheia este fișierul .key scris lângă CSR; protejați-l ca pe orice alt secret și faceți o copie de rezervă înainte de a implementa certificatul.

Pot genera un CSR direct cu PowerShell, fără un fișier INF?

PowerShell nu are un cmdlet nativ pentru CSR. New-SelfSignedCertificate creează o pereche de chei, dar produce un certificat autosemnat finalizat, nu un CSR pe care o CA publică îl poate semna. Modalitatea acceptată de a construi o cerere din PowerShell este să scrieți fișierul INF prezentat mai sus și să apelați certreq.exe asupra lui (certreq -new request.inf request.csr). Module terțe precum PSPKI încapsulează certreq într-o interfață mai prietenoasă, dar instrumentul de bază rămâne certreq.

Ce se întâmplă dacă anulez asistentul sau nu trimit niciodată cererea?

Cererea în așteptare și cheia sa privată rămân în Certificates (Local Computer) > Certificate Enrollment Requests. Nu fac nimic de la sine și nu strică nimic, dar se acumulează în timp. Deschideți snap-in-ul MMC Certificates, verificați cererile în așteptare și ștergeți-le pe cele de care nu mai aveți nevoie; astfel se elimină și cheia asociată.

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.