bg-tutorials

Cum se generează un CSR pe Postfix

Acest ghid vă arată cum să generați un CSR (Certificate Signing Request) pe Postfix folosind linia de comandă OpenSSL. Postfix în sine nu generează chei sau CSR-uri; el utilizează fișierele produse de OpenSSL și le referențiază din /etc/postfix/main.cf. Rulați o singură comandă care creează două fișiere simultan: o cheie privată care rămâne pe server și CSR-ul pe care îl trimiteți autorității de certificare (CA).

CSR-ul codifică numele de gazdă pe care MTA-ul dumneavoastră îl prezintă la STARTTLS, detaliile organizației și jumătatea publică a cheii. Cheia privată corespunzătoare nu părăsește niciodată serverul. Dacă o pierdeți, certificatul emis devine inutilizabil și trebuie să luați totul de la capăt.

Cerințe prealabile

  • Acces root sau sudo la serverul pe care rulează Postfix.
  • OpenSSL instalat. Acesta este inclus în sistemul de bază al oricărei distribuții Linux majore; verificați cu openssl version.
  • Numele de gazdă complet calificat al serverului de mail pe care doriți să-l puneți pe certificat, de exemplu mail.example.com. Acesta trebuie să corespundă înregistrării MX la care se conectează clienții prin STARTTLS, nu domeniului apex simplu.

Pasul 1: Pregătiți un director pentru cheie și CSR

Păstrați materialul TLS Postfix într-un director propriu, sub /etc/postfix/, pentru ca permisiunile să fie ușor de gestionat. Creați-l și restricționați-l la root:

sudo mkdir -p /etc/postfix/ssl
sudo chmod 700 /etc/postfix/ssl
cd /etc/postfix/ssl

Veți genera cheia și CSR-ul în acest director, apoi le veți referenția din main.cf după ce CA emite certificatul.

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

Rulați comanda de mai jos. Aceasta creează cheia privată și CSR-ul într-un singur pas și include Subject Alternative Name (SAN), cerut de browserele moderne, clienții de mail și CA-uri. SAN-ul trebuie să conțină numele de gazdă al serverului de mail (cel către care indică înregistrarea MX), nu domeniul apex simplu:

sudo openssl req -new -newkey rsa:2048 -nodes 
-keyout /etc/postfix/ssl/mail.example.com.key 
-out /etc/postfix/ssl/mail.example.com.csr 
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=mail.example.com" 
-addext "subjectAltName=DNS:mail.example.com"

Iată ce face fiecare parte:

  • req -new creează o nouă cerere de semnare a certificatului.
  • -newkey rsa:2048 generează o nouă cheie privată RSA de 2048 de biți. 2048 de biți reprezintă minimul actual pentru certificatele publice; puteți folosi rsa:4096 pentru o cheie mai mare.
  • -nodes lasă cheia privată necriptată (fără parolă), astfel încât Postfix să o poată încărca la pornire fără a cere confirmare.
  • -keyout scrie cheia privată. Păstrați acest fișier privat și nu îl trimiteți nimănui, nici măcar CA.
  • -out scrie CSR-ul pe care îl trimiteți CA.
  • -subj completează câmpurile subiectului direct în linia de comandă, astfel încât comanda rulează fără solicitări interactive. Setați CN (Common Name) la numele de gazdă al serverului de mail.
  • -addext „subjectAltName=…” adaugă intrarea SAN. CA-urile emit pe baza listei SAN, astfel încât numele de gazdă al serverului de mail trebuie să apară aici.

Înlocuiți mail.example.com cu numele de gazdă real la care se conectează clienții (adesea același nume ca înregistrarea dumneavoastră MX) și editați valorile -subj pentru a corespunde organizației dumneavoastră. Codul de țară din două litere (C) trebuie să fie scris cu majuscule, de exemplu US sau GB. Pentru un certificat validat la nivel de domeniu (DV), câmpurile organizației nu sunt verificate, dar comanda are nevoie totuși de valori valide. OpenSSL modern semnează CSR-ul cu SHA-256 în mod implicit, ceea ce este cerut de fiecare CA publică.

Dacă preferați să completați câmpurile interactiv, în loc să folosiți -subj, eliminați acea linie, iar OpenSSL vă va solicita fiecare valoare:

sudo openssl req -new -newkey rsa:2048 -nodes 
-keyout /etc/postfix/ssl/mail.example.com.key 
-out /etc/postfix/ssl/mail.example.com.csr 
-addext "subjectAltName=DNS:mail.example.com"

Când vi se solicită, lăsați câmpurile challenge password și optional company name goale, apăsând Enter. CA-urile ignoră aceste câmpuri, iar o parolă de tip challenge poate cauza probleme ulterior.

Acoperirea mai multor nume de gazdă

Dacă aceeași instanță Postfix răspunde la mai multe nume (de exemplu, atât mail.example.com, cât și smtp.example.com, sau un certificat comun pentru mail și webmail), enumerați fiecare nume de gazdă în valoarea SAN, separate prin virgulă:

-addext "subjectAltName=DNS:mail.example.com,DNS:smtp.example.com,DNS:webmail.example.com"

Common Name ar trebui să rămână numele principal de gazdă al serverului de mail. Adăugarea domeniului apex simplu în SAN este utilă doar dacă clienții de mail se conectează vreodată direct la acesta; dacă înregistrarea dumneavoastră MX indică spre un subdomeniu, nu aveți nevoie de domeniul apex pe certificat.

Preferați o cheie ECDSA?

Cheile ECDSA sunt mai mici și mai rapide decât RSA la același nivel de securitate și sunt acceptate de toți clienții de mail și CA-urile actuale. Pentru a genera în schimb o cheie P-256 (prime256v1) și un CSR, înlocuiți argumentul -newkey:

sudo openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes 
-keyout /etc/postfix/ssl/mail.example.com.key 
-out /etc/postfix/ssl/mail.example.com.csr 
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=mail.example.com" 
-addext "subjectAltName=DNS:mail.example.com"

Pasul 3: Protejați cheia privată

Restricționați cheia privată astfel încât doar root să o poată citi. Postfix deschide materialul TLS înainte de a renunța la privilegii, astfel încât proprietatea root și modul 600 sunt corecte și necesare:

sudo chown root:root /etc/postfix/ssl/mail.example.com.key
sudo chmod 600 /etc/postfix/ssl/mail.example.com.key

Fișierul CSR nu este secret (conține doar cheia publică și detaliile despre subiect), dar păstrarea lui în același director restricționat menține structura ordonată.

Pasul 4: Verificați CSR-ul

Înainte de a trimite cererea, confirmați că aceasta conține numele de gazdă și SAN-ul corect și că semnătura sa este validă. Această comandă afișează conținutul decodat și verifică semnătura local:

openssl req -noout -text -verify -in /etc/postfix/ssl/mail.example.com.csr

Căutați verify OK în rezultat, verificați că linia Subject arată numele de gazdă al serverului de mail ca Common Name și confirmați că secțiunea X509v3 Subject Alternative Name enumeră fiecare nume de gazdă pe care îl așteptați. Dacă lipsește un SAN, regenerați CSR-ul cu valoarea corectă pentru -addext: o CA nu poate adăuga nume de gazdă după emitere. De asemenea, puteți lipi CSR-ul în CSR Decoder-ul nostru online, pentru a verifica aceste câmpuri direct în browser.

Pasul 5: Trimiteți CSR-ul

Deschideți fișierul CSR și copiați întregul său conținut, inclusiv liniile BEGIN și END:

cat /etc/postfix/ssl/mail.example.com.csr

Blocul arată astfel. Copiați totul, de la prima linie până la ultima, inclusiv cele cinci cratime de pe fiecare parte a marcatorilor BEGIN și END:

-----BEGIN CERTIFICATE REQUEST-----
MIIC...base64-encoded data...AB
-----END CERTIFICATE REQUEST-----

Lipiți acel bloc în formularul de comandă SSL. După ce CA validează CSR-ul și emite certificatul, urmați instrucțiunile noastre de instalare SSL pentru Postfix pentru a-l implementa. Păstrați fișierul .key pe server: aveți nevoie de el împreună cu certificatul emis pentru a servi STARTTLS și nu trebuie niciodată să îl trimiteți către CA sau oricine altcineva.

Dacă preferați să nu folosiți linia de comandă, construiți cererea cu CSR Generator-ul nostru și lipiți rezultatul în comanda dumneavoastră. Generatorul returnează o cheie privată corespunzătoare, pe care o plasați la aceeași cale pe server.

Unde ajung fișierele în Postfix

Pentru context, iată cum sunt integrate în Postfix fișierele pe care tocmai le-ați generat, odată ce CA returnează certificatul și intermediarul (pachetul CA). Pe Postfix 3.4 și versiunile ulterioare, forma recomandată cu o singură directivă folosește un fișier PEM care conține cheia privată urmată de lanțul complet de certificate:

cat mail.example.com.key mail.example.com.crt intermediate.pem 
> /etc/postfix/ssl/mail.example.com.chain.pem
sudo chmod 600 /etc/postfix/ssl/mail.example.com.chain.pem

Apoi, în /etc/postfix/main.cf:

smtpd_tls_chain_files = /etc/postfix/ssl/mail.example.com.chain.pem
smtpd_tls_security_level = may

Pe versiuni de Postfix mai vechi de 3.4, folosiți perechea de directive vechi, cu cheia și certificatul cu lanț complet păstrate în fișiere separate:

smtpd_tls_cert_file = /etc/postfix/ssl/mail.example.com.fullchain.crt
smtpd_tls_key_file  = /etc/postfix/ssl/mail.example.com.key
smtpd_tls_security_level = may

Ghidul complet de instalare, inclusiv serviciul de trimitere pe portul 587 și verificarea cu OpenSSL, se găsește în ghidul nostru de instalare SSL pentru Postfix.

Generați un CSR pe alte platforme de mail

Rulați un alt server sau gateway de mail? Consultați celelalte ghiduri CSR ale noastre:

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.