Acest ghid vă arată cum să generați un CSR (Certificate Signing Request) pe qmail folosind linia de comandă OpenSSL. Qmail (și fork-ul său întreținut activ, notqmail) nu include un instrument CSR încorporat. Folosiți OpenSSL pentru a crea 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ă al serverului de mail pe care serverul dumneavoastră îl prezintă în timpul STARTTLS, detaliile organizației dumneavoastră și partea 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ă generați o pereche nouă.
O notă despre qmail vs. notqmail: qmail-ul original a fost înghețat de Daniel J. Bernstein în 1998 și nu a mai primit actualizări din partea dezvoltatorului de atunci. notqmail (ultima versiune: 1.09, mai 2024) este fork-ul întreținut de comunitate care adaugă remedieri de securitate, compatibilitate actuală de build și lucrări continue de portabilitate. TLS nu face parte din el: pe notqmail, la fel ca pe qmail-ul original, STARTTLS provine dintr-un patch extern, iar notele de lansare 1.09 consemnează că patch-ul smtp-tls existent nu se aplică acelei versiuni și că este necesar un nou patch actualizat. Verificați starea patch-ului pentru versiunea pe care o rulați înainte de a comanda un certificat. Procesul de generare a CSR este identic pentru ambele, deoarece folosește OpenSSL și nu vreun binar qmail. Dacă încă rulați qmail-ul original, luați în considerare migrarea la notqmail sau Postfix pentru suport de securitate continuu.
Cerințe preliminare
- Acces root sau sudo la serverul care rulează qmail (sau notqmail).
- OpenSSL instalat. Acesta este inclus în sistemul de bază al fiecărei distribuții Linux și BSD principale. Verificați cu
openssl version. - Numele de gazdă complet calificat al serverului de mail pe care doriți să îl includeți în 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
Qmail-smtpd citește certificatul TLS din /var/qmail/control/servercert.pem, calea codificată direct de patch-ul TLS. Creați un subdirector pentru materialul cheii și restricționați-l doar pentru root:
sudo mkdir -p /var/qmail/control/ssl
sudo chmod 700 /var/qmail/control/ssl
cd /var/qmail/control/ssl
Veți genera cheia și CSR-ul în acest director. După ce CA emite certificatul, combinați fișierele în servercert.pem pe care qmail-smtpd îl citește la pornire.
Pasul 2: Generați cheia privată și CSR-ul
Executați comanda de mai jos. Aceasta creează cheia privată și CSR-ul într-un singur pas și include Subject Alternative Name (SAN) pe care clienții de mail moderni și CA-urile îl solicită. SAN trebuie să enumere numele de gazdă al serverului de mail (cel spre care indică înregistrarea dumneavoastră MX):
sudo openssl req -new -newkey rsa:2048 -nodes
-keyout /var/qmail/control/ssl/mail.example.com.key
-out /var/qmail/control/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 este minimul actual pentru certificatele publice; puteți folosi rsa:4096 pentru o cheie mai mare.
- -nodes lasă cheia privată necriptată (fără parolă de acces), astfel încât qmail-smtpd să o poată încărca la pornire fără a solicita introducerea unei parole.
- -keyout scrie cheia privată. Păstrați acest fișier privat și nu îl trimiteți niciodată nimănui, inclusiv CA-ului.
- -out scrie CSR-ul pe care îl trimiteți către CA.
- -subj completează câmpurile subiectului direct în comandă, astfel încât aceasta se execută fără solicitări interactive. Setați CN (Common Name) la numele de gazdă al serverului dumneavoastră de mail.
- -addext „subjectAltName=…” adaugă intrarea SAN. CA-urile emit certificate în funcție de lista SAN, așa că 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 (de obicei același nume ca înregistrarea MX) și editați valorile -subj pentru a se potrivi organizației dumneavoastră. Codul de țară din două litere (C) trebuie să fie majuscule, de exemplu US sau GB. Pentru un certificat cu validare 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 exact ceea ce solicită orice CA publică.
Dacă preferați să completați câmpurile interactiv, în loc să folosiți -subj, eliminați acel indicator, iar OpenSSL vă va solicita fiecare valoare:
sudo openssl req -new -newkey rsa:2048 -nodes
-keyout /var/qmail/control/ssl/mail.example.com.key
-out /var/qmail/control/ssl/mail.example.com.csr
-addext "subjectAltName=DNS:mail.example.com"
Când vi se solicită, lăsați parola de provocare (challenge password) și numele opțional al companiei necompletate, apăsând Enter. CA-urile ignoră aceste câmpuri, iar o parolă de provocare cauzează probleme mai târziu.
Includerea mai multor nume de gazdă
Dacă aceeași instanță qmail răspunde la mai multe nume (de exemplu, atât mail.example.com cât și smtp.example.com), enumerați fiecare nume de gazdă în valoarea SAN, separate prin virgulă:
-addext "subjectAltName=DNS:mail.example.com,DNS:smtp.example.com"
Common Name ar trebui să rămână numele de gazdă principal al serverului de mail. Adăugarea domeniului apex simplu la SAN este utilă doar dacă clienții de mail se conectează vreodată direct la acesta; dacă înregistrarea MX indică 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 fiecare client de mail și CA actual. Pentru a genera în schimb o cheie și un CSR P-256 (prime256v1), înlocuiți argumentul -newkey:
sudo openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes
-keyout /var/qmail/control/ssl/mail.example.com.key
-out /var/qmail/control/ssl/mail.example.com.csr
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=mail.example.com"
-addext "subjectAltName=DNS:mail.example.com"
Rețineți că qmail-ul original cu patch-urile TLS ale lui DJB poate să nu accepte ECDSA. Dacă rulați notqmail cu un OpenSSL actual, ECDSA funcționează fără probleme.
Pasul 3: Protejați cheia privată
Restricționați cheia privată astfel încât doar root să o poată citi. Fișierul cheie brut este necesar doar atunci când construiți mai târziu fișierul combinat servercert.pem, astfel încât proprietatea root și modul 600 sunt corecte:
sudo chown root:root /var/qmail/control/ssl/mail.example.com.key
sudo chmod 600 /var/qmail/control/ssl/mail.example.com.key
Fișierul CSR nu este secret (conține doar cheia publică și detaliile despre subiectul dumneavoastră), dar păstrarea lui în același director restricționat menține ordinea structurii.
Pasul 4: Verificați CSR-ul
Înainte de a trimite cererea, confirmați că aceasta conține numele de gazdă corect și SAN și că semnătura sa este validă:
openssl req -noout -text -verify -in /var/qmail/control/ssl/mail.example.com.csr
Căutați verify OK în rezultat, verificați dacă linia Subject afișează numele de gazdă al serverului dumneavoastră de mail ca Common Name și confirmați că secțiunea X509v3 Subject Alternative Name enumeră fiecare nume de gazdă la care vă așteptați. Dacă un SAN lipsește, regenerați CSR-ul cu valoarea corectă -addext: o CA nu poate adăuga nume de gazdă după emitere. De asemenea, puteți copia CSR-ul în instrumentul nostru online CSR Decoder pentru a verifica aceste câmpuri direct în browser.
Pasul 5: Trimiteți CSR-ul
Deschideți fișierul CSR și copiați întregul conținut, inclusiv liniile BEGIN și END:
cat /var/qmail/control/ssl/mail.example.com.csr
Blocul are următoarea formă. Copiați tot conținutul de la prima linie la ultima, inclusiv cele cinci liniuțe 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 dumneavoastră de comandă SSL. După ce CA validează CSR-ul și emite certificatul, urmați ghidul nostru de instalare SSL pentru qmail pentru a-l implementa. Păstrați fișierul .key pe server: aveți nevoie de el împreună cu certificatul emis pentru a activa STARTTLS și nu trebuie niciodată să îl trimiteți CA-ului sau altcuiva.
Dacă preferați să nu folosiți linia de comandă, construiți cererea cu CSR Generator ș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 se află fișierele în qmail
Pentru context, așa sunt integrate în qmail fișierele pe care le-ați generat, după ce CA returnează certificatul și intermediarul (pachetul CA). Qmail-smtpd citește materialul TLS dintr-un singur fișier PEM combinat la /var/qmail/control/servercert.pem. Acest fișier trebuie să conțină cheia privată, certificatul serverului și certificatele intermediare, concatenate în această ordine:
cat mail.example.com.key mail.example.com.crt intermediate.pem
> /var/qmail/control/servercert.pem
sudo chown root:nofiles /var/qmail/control/servercert.pem
sudo chmod 640 /var/qmail/control/servercert.pem
Grupul nofiles este grupul implicit pentru utilizatorul qmaild sub care rulează qmail-smtpd. Modul 640 permite qmaild să citească fișierul prin apartenența la grup, păstrându-l totodată necitibil de către alți utilizatori. Dacă sistemul dumneavoastră folosește un alt grup pentru qmaild, înlocuiți acel nume de grup în comanda chown.
Qmail-smtpd oferă STARTTLS doar atunci când a fost compilat cu suport TLS, ceea ce nici qmail-ul original, nici notqmail nu includ implicit. Ruta obișnuită pentru amândouă este patch-ul qmail-tls al lui Frederik Vermeulen: acesta este cel care face ca qmail-smtpd să citească servercert.pem și să anunțe STARTTLS imediat ce acel fișier este prezent. Cealaltă rută este s/qmail al lui Erwin Hoffmann cu ucspi-ssl, unde sslserver exportă variabila de mediu UCSPITLS în /service/qmail-smtpd/run, iar cheia se află într-un fișier separat serverkey.pem, astfel încât structura cu un singur fișier de mai sus nu se aplică acolo. După plasarea fișierului PEM combinat, reporniți serviciul qmail-smtpd:
sudo svc -t /service/qmail-smtpd
Instrucțiunile complete de instalare, inclusiv verificarea lanțului de certificate cu OpenSSL, se găsesc în ghidul nostru de instalare SSL pentru qmail.
Verificați STARTTLS după instalare
Odată ce certificatul este instalat, confirmați că serverul dumneavoastră anunță STARTTLS și oferă un lanț valid:
openssl s_client -connect mail.example.com:25 -starttls smtp -servername mail.example.com
Căutați Verify return code: 0 (ok) și confirmați că subiectul și emitentul corespund certificatului dumneavoastră. Puteți, de asemenea, să scanați serverul cu SSL Checker pentru un raport vizual al lanțului de certificate și al datei de expirare.
Generați un CSR pe alte platforme de mail
Utilizați un alt server de mail? Consultați celelalte ghiduri noastre pentru CSR:
- Courier IMAP Server
- Kerio Connect
- Postfix
- Proxmox
- SurgeMail
- Zimbra
- Toate tutorialele de generare 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


