bg-tutorials

Cum să generați un CSR pe Apache

Acest tutorial vă arată cum să generați un CSR pe Apache folosind linia de comandă OpenSSL pe același server care rulează Apache HTTP Server. Veți crea două fișiere într-o singură comandă: o nouă cheie privată și CSR-ul corespunzător (Certificate Signing Request) pe care îl trimiteți Autorității de Certificare.

Pașii de mai jos funcționează pe orice distribuție Linux modernă care găzduiește Apache (Ubuntu, Debian, RHEL, AlmaLinux, Rocky Linux, Amazon Linux 2023), deoarece toate vin cu OpenSSL 1.1.1 sau OpenSSL 3.x. Ambele versiuni semnează cererea cu SHA-256 în mod implicit, așa că nu este nevoie să adăugați un flag pentru digest. Aceeași comandă funcționează și pe FreeBSD și pe macOS cu Apache.

Pasul 1: Conectați-vă la serverul dvs. Apache

Deschideți Terminal pe macOS sau Linux, sau PowerShell sau Windows Terminal pe Windows, și conectați-vă la server prin SSH. Înlocuiți numele de utilizator și hostul cu ale dvs.:

ssh your-user@your-apache-server

Generați CSR-ul pe același server care va găzdui certificatul. Cheia privată este creată alături de CSR și trebuie să rămână pe acel server, așa că rularea comenzii pe laptopul dvs. și copierea cheii în altă parte anulează scopul. Este posibil să doriți, de asemenea, să faceți acest lucru într-un director dedicat pe care îl puteți găsi mai târziu, de exemplu:

sudo mkdir -p /etc/ssl/yourdomain
cd /etc/ssl/yourdomain

Pasul 2: Generați cheia privată și CSR-ul

Dacă ați generat deja CSR-ul cu un alt instrument, treceți direct la instalarea certificatului pe Apache.

Executați următoarea comandă OpenSSL. Aceasta creează o cheie RSA de 2048 de biți și un CSR într-un singur pas, cu subiectul și Subject Alternative Names (SAN) furnizate direct astfel încât OpenSSL să nu se oprească pentru a pune întrebări:

openssl req -new -newkey rsa:2048 -nodes 
-keyout yourdomain.key 
-out yourdomain.csr 
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com" 
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"

Ce face fiecare parte:

  • -newkey rsa:2048 generează o nouă cheie RSA de 2048 de biți. 2048 de biți este minimul actual pentru certificatele publice; puteți folosi rsa:4096 pentru o cheie mai mare, sau puteți trece la ECDSA (vezi mai jos).
  • -nodes lasă cheia privată necriptată, astfel încât Apache să o poată citi la pornire fără a solicita o parolă.
  • -keyout și -out denumesc fișierele cheii private și CSR-ului.
  • -subj furnizează subiectul certificatului. Introduceți aici numele real al companiei, statul și orașul dvs., nu substituenții. CN (Common Name) este domeniul dvs. principal.
  • -addext „subjectAltName=…” listează fiecare nume de host pe care certificatul trebuie să îl acopere. CA-urile publice validează în funcție de lista SAN, așa că includeți și Common Name aici.

Înlocuiți yourdomain.com cu domeniul dvs. real în tot textul. Pentru a acoperi nume de host suplimentare, adăugați-le în lista SAN separate prin virgule, de exemplu DNS:api.yourdomain.com. Pentru un certificat wildcard, includeți atât wildcard-ul, cât și domeniul simplu: DNS:*.yourdomain.com,DNS:yourdomain.com. Folosiți doar caractere alfanumerice în câmpurile subiectului și folosiți codul oficial de țară din două litere pentru câmpul C.

Dacă preferați o cheie ECDSA (mai mică și mai rapidă, cu P-256 acceptat pe scară largă), generați cheia și CSR-ul astfel:

openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes 
-keyout yourdomain.key 
-out yourdomain.csr 
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com" 
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"

Dacă preferați să răspundeți la solicitări câmp cu câmp, executați openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr fără -subj și fără -addext. OpenSSL va solicita fiecare câmp pe rând. Când se întâmplă acest lucru:

  • Country Name (C): codul ISO din două litere al țării dvs., de exemplu US sau GB. Pentru certificatele Business Validation sau Extended Validation, acesta trebuie să fie țara oficială de înregistrare a organizației dvs.
  • State or Province Name (ST): numele complet, de exemplu California. Nu abreviați.
  • Locality Name (L): orașul, de exemplu San Francisco.
  • Organization Name (O): numele oficial înregistrat al companiei dvs., de exemplu GPI Holding LLC. Pentru certificatele Domain Validation puteți introduce NA.
  • Organizational Unit Name (OU): acest câmp este depreciat și ignorat de CA-urile publice. Lăsați-l gol apăsând Enter.
  • Common Name (CN): numele de domeniu complet calificat (Fully Qualified Domain Name) pentru care este destinat certificatul, de exemplu www.yourdomain.com. Pentru un wildcard, folosiți *.yourdomain.com.
  • Email Address: opțional și neutilizat de CA-urile publice. Puteți lăsa acest câmp gol.
  • A challenge password și An optional company name: sunt ambele atribute obsolete pe care CA-urile publice le ignoră. Lăsați-le goale.

Fără flag-ul -addext, CSR-ul rezultat nu va avea intrări SAN. CA-urile publice validează în funcție de lista SAN și vor respinge (sau vor înlocui în tăcere) o cerere fără aceasta, așa că traseul recomandat este comanda de mai sus cu -subj plus -addext inline.

Pasul 3: Localizați fișierele dvs.

Listați directorul curent pentru a confirma că ambele fișiere au fost create:

ls

Ar trebui să vedeți două fișiere noi:

  • yourdomain.key: cheia dvs. privată. Păstrați-o pe server, faceți-i o copie de siguranță în siguranță și nu o trimiteți niciodată nimănui, inclusiv Autorității de Certificare. Cel care deține cheia poate să se dea drept site-ul dvs.
  • yourdomain.csr: cererea dvs. de semnare a certificatului. Acesta este fișierul pe care îl trimiteți furnizorului SSL.

Restricționați cheia privată astfel încât doar proprietarul fișierului să o poată citi:

chmod 600 yourdomain.key

Pasul 4: Verificați CSR-ul (opțional, dar recomandat)

Înainte de a-l trimite, verificați dacă CSR-ul conține subiectul și SAN-urile corecte și dacă semnătura sa este validă. Aceasta decodează cererea local cu OpenSSL:

openssl req -noout -text -verify -in yourdomain.csr

Confirmați că linia Subject arată detaliile dvs., că X509v3 Subject Alternative Name listează fiecare nume de host pe care îl așteptați și că verificarea semnăturii afișează verify OK. Algoritmul semnăturii ar trebui să fie sha256WithRSAEncryption (sau ecdsa-with-SHA256 pentru o cheie ECDSA). Dacă preferați să nu folosiți linia de comandă, lipiți CSR-ul în decodorul nostru online CSR decoder pentru a citi aceleași câmpuri într-un browser.

Pasul 5: Trimiteți CSR-ul dvs.

Pentru a copia CSR-ul pentru comanda dvs., afișați conținutul acestuia:

cat yourdomain.csr

Veți vedea un bloc de text asemănător cu acesta:

-----BEGIN CERTIFICATE REQUEST-----
MIICyzCCAbMCAQAwTDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQsw...
...(many more lines of base64 characters)...
-----END CERTIFICATE REQUEST-----

Copiați întregul bloc, inclusiv liniile ––BEGIN CERTIFICATE REQUEST–– și ––END CERTIFICATE REQUEST–– (fiecare marcaj are cinci liniuțe pe fiecare parte). Acel bloc întreg este CSR-ul dvs. Lipiți-l în formularul de comandă în timpul achiziției și păstrați cheia privată corespunzătoare la locul ei pe server.

Dacă preferați să nu folosiți linia de comandă, puteți construi cererea și cu instrumentul nostru online CSR Generator. Rețineți că acesta generează cheia privată în browserul dvs., așa că salvați chiar dvs. acea cheie și transferați-o pe server.

După ce CA-ul dvs. validează cererea, veți primi certificatul. În funcție de nivelul de validare, acest lucru durează câteva minute pentru Domain Validation, sau până la câteva zile lucrătoare pentru Business Validation și Extended Validation.

Pasul 6: Instalați certificatul pe Apache

Când ajunge certificatul, plasați certificatul emis (inclusiv orice certificate intermediare concatenate într-un singur fișier fullchain) și cheia privată pe server, apoi îndreptați Apache spre acestea în virtual host-ul site-ului dvs.:

SSLCertificateFile    /etc/ssl/yourdomain/fullchain.crt
SSLCertificateKeyFile /etc/ssl/yourdomain/yourdomain.key

Apache modern (2.4.8 și versiunile ulterioare) citește certificatul de tip leaf și orice certificate intermediare dintr-un singur fișier trecut către SSLCertificateFile, așa că concatenați certificatul dvs. și pachetul CA într-un singur fișier. Vechea directivă SSLCertificateChainFile este depreciată și nu trebuie folosită pe versiunile actuale de Apache. Testați configurația cu apachectl configtest și reîncărcați Apache pentru a aplica modificarea. Pentru fluxul complet de lucru, consultați ghidul nostru despre cum să instalați un certificat SSL pe Apache.

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.