bg-tutorials

Cum să instalați un certificat SSL ACME pe serverele de poștă electronică

În acest ghid, veți învăța cum să instalați un certificat SSL ACME pe serverele de e-mail, în special Postfix, Dovecot și, opțional, Exim, utilizând furnizori comerciali care acceptă ACME + EAB. Vom utiliza acme.sh pentru a vă înregistra contul ACME, pentru a emite un certificat pentru numele dvs. de gazdă de e-mail și apoi pentru a conecta acest certificat direct în configurația TLS a serverului dvs. de e-mail.

Servere de e-mail ACME SSL

Acest ghid presupune un server de e-mail bazat pe Linux și un CA comercial care furnizează o adresă URL pentru directorul ACME împreună cu acreditările EAB (Key ID + HMAC). Deoarece mediile de poștă electronică diferă de la o distribuție la alta și de la o configurație de găzduire la alta, tratați acest ghid ca pe o schiță clară și fiabilă, dar verificați întotdeauna căile, numele serviciilor și setările TLS ale propriului server.


Înainte de a începe

Veți avea un timp mult mai ușor dacă aceste elemente de bază sunt pregătite:

  • Un nume de gazdă de e-mail, de exemplu mail.example.com, cu o înregistrare A/AAAA indicând serverul de e-mail
  • Înregistrarea MX care indică acel nume de gazdă (configurație comună)
  • Acces Shell/SSH la serverul de e-mail cu sudo sau root
  • Un cont CA comercial care furnizează o adresă URL a directorului ACME(de exemplu, https://acme.yourca.com/v2/acme), EAB Key ID și cheia EAB HMAC
  • Mail stack: Postfix/Exim pentru SMTP și Dovecot pentru IMAP/POP3

Vom folosi validarea DNS-01 deoarece funcționează chiar și atunci când serverul dvs. de e-mail nu rulează un site web public și este adesea preferată în producție.


Pasul 1: Instalarea acme.sh pe serverul de e-mail

Veți instala clientul ACME direct pe serverul de e-mail, astfel încât acesta să poată reînnoi certificatele și să le scrie pe disc, unde Postfix/Dovecot/Exim le poate citi.

Pe serverul de e-mail:

curl https://get.acme.sh | sh
source ~/.bashrc
acme.sh --version

Dacă vedeți un număr de versiune, clientul este instalat și gata. Dacă linia source ~/.bashrc nu funcționează, deconectați-vă și conectați-vă din nou, apoi executați din nou acme.sh --version.


Pasul 2: Înregistrați-vă contul ACME (cu EAB)

În continuare, trebuie să vă înregistrați contul ACME la CA-ul dvs. comercial utilizând acreditările EAB din panoul lor. acme.sh acceptă EAB prin --eab-kid și --eab-hmac-key.

Rulați acest lucru pe serverul de e-mail:

acme.sh --register-account \
  --server https://acme.yourca.com/v2/acme \
  --eab-kid YOUR_EAB_KID \
  --eab-hmac-key YOUR_EAB_HMAC_KEY \
  --accountemail [email protected]

Înlocuiți:

  • https://acme.yourca.com/v2/acme cu URL-ul directorului ACME al CA-ului dvs.
  • YOUR_EAB_KID cu ID-ul cheii
  • YOUR_EAB_HMAC_KEY cu cheia HMAC
  • [email protected] cu adresa dvs. reală de e-mail de administrare pentru notificările de expirare

Faceți acest lucru o dată pentru fiecare cont. Dacă comanda eșuează, este vorba aproape întotdeauna de o greșeală de tipar în valorile URL sau EAB.


Pasul 3: Eliberarea certificatului prin DNS-01

Acum solicitați un certificat pentru numele de gazdă la care se vor conecta utilizatorii dvs., de exemplu mail.example.com (sau imap.example.com, smtp.example.com. Alegeți-l pe cel pe care îl utilizați efectiv în configurațiile clienților).

Eliberarea certificatului (DNS manual)

Rulați:

acme.sh --issue \
  -d mail.example.com \
  --dns dns_manual \
  --server https://acme.yourca.com/v2/acme

--dns dns_manual spune acme.sh veți adăuga manual înregistrări TXT în panoul DNS.

Clientul va afișa ceva de genul:

Please add a TXT record:
_acme-challenge.mail.example.com → some-long-token-value

Adăugați înregistrarea TXT

În panoul furnizorului DNS, creați o înregistrare TXT:

  • Nume: _acme-challenge.mail.example.com
  • Valoare: simbolul afișat de acme.sh

Așteptați câteva minute pentru propagarea DNS, apoi verificați cu:

dig TXT _acme-challenge.mail.example.com +short

Dacă vedeți tokenul acolo, executați din nou comanda acme.sh --issue pentru a finaliza validarea. Atunci când reușește, acme.sh stochează fișierele dvs. în ~/.acme.sh/mail.example.com/.

În interiorul acelui director veți avea cel puțin:

  • fullchain.cer – certificat plus lanț intermediar
  • mail.example.com.key – cheie privată
  • ca.cer – Certificatele CA (dacă CA-ul dvs. le furnizează separat)

Le vom folosi în etapele următoare.


Pasul 4: Configurați Postfix pentru a utiliza certificatul ACME (SMTP)

Postfix trebuie să știe unde se află noul certificat și noua cheie. TLS în Postfix este controlat de opțiuni precum smtpd_tls_cert_file și smtpd_tls_key_file.

Mai întâi, copiați fișierele într-o locație stabilă, de exemplu:

sudo mkdir -p /etc/ssl/mail
sudo cp ~/.acme.sh/mail.example.com/fullchain.cer /etc/ssl/mail/mail-fullchain.cer
sudo cp ~/.acme.sh/mail.example.com/mail.example.com.key /etc/ssl/mail/mail.key
sudo chown root:root /etc/ssl/mail/*
sudo chmod 600 /etc/ssl/mail/mail.key

Apoi spuneți-i lui Postfix să le folosească:

sudo postconf -e 'smtpd_use_tls = yes'
sudo postconf -e 'smtpd_tls_security_level = may'
sudo postconf -e 'smtpd_tls_cert_file = /etc/ssl/mail/mail-fullchain.cer'
sudo postconf -e 'smtpd_tls_key_file = /etc/ssl/mail/mail.key'
sudo postconf -e 'smtp_tls_security_level = may'
  • smtpd_* setările controlează poșta de intrare (clienții care vă trimit mesaje)
  • smtp_* setările controlează corespondența de ieșire (serverul dvs. trimite corespondență altor persoane)

Aplicați modificările:

sudo systemctl restart postfix

Dacă distribuția dvs. utilizează încă service, ajustați comanda în consecință.


Pasul 5: Configurați Dovecot pentru a utiliza certificatul ACME (IMAP/POP3)

Dovecot se ocupă de IMAP și POP3. Configurați TLS prin direcționarea ssl_cert și ssl_key către aceleași fișiere pe care tocmai le-am pregătit.

Deschideți configurația SSL a Dovecot:

sudo nano /etc/dovecot/conf.d/10-ssl.conf

Actualizați (sau adăugați) aceste rânduri:

ssl = yes
ssl_cert = </etc/ssl/mail/mail-fullchain.cer
ssl_key  = </etc/ssl/mail/mail.key

Salvați fișierul și reîncărcați Dovecot:

sudo systemctl restart dovecot

Acum IMAP/POP3 prin TLS va prezenta același certificat comercial ACME.


Opțional: Utilizați același certificat în Exim

Dacă folosiți Exim ca server de e-mail în loc de Postfix, integrarea este similară. Exim utilizează opțiunile tls_certificate și tls_privatekey pentru TLS.

În configurația Exim (calea depinde de distro, adesea /etc/exim4/exim4.conf.template sau split config sub /etc/exim4/conf.d/), setați:

tls_certificate = /etc/ssl/mail/mail-fullchain.cer
tls_privatekey  = /etc/ssl/mail/mail.key

Apoi reîncărcați Exim:

sudo systemctl restart exim4

Verificați documentația pachetului de distribuție dacă numele serviciului este ușor diferit.


Pasul 6: Testați e-mailul TLS

Puteți testa de pe orice altă mașină care are OpenSSL instalat.

Testați SMTP (Postfix sau Exim)

openssl s_client -starttls smtp -connect mail.example.com:587 -showcerts

Testare IMAP (Dovecot)

openssl s_client -starttls imap -connect mail.example.com:143 -showcerts

Dacă rezultatul afișează CA-ul dvs. comercial și numele de gazdă se potrivește, sunteți în regulă.


Pasul 7: Mențineți reînnoirea și reîncărcarea automatizate

acme.sh instalează deja un cron job care verifică zilnic reînnoirile. Atunci când certificatul dvs. este aproape de expirare, acesta se va reînnoi automat și va actualiza fișierele din ~/.acme.sh/mail.example.com/.

Pentru a face ca Postfix/Dovecot/Exim să utilizeze întotdeauna cea mai recentă versiune, aveți două opțiuni:

  1. Indicați configurațiile direct la fișierele din ~/.acme.sh/mail.example.com/
    (de exemplu, smtpd_tls_cert_file = /root/.acme.sh/mail.example.com/fullchain.cer) și asigurați-vă că numai root le poate citi.
  2. Scrieți un mic script de implementare care copiază fișierele reînnoite în /etc/ssl/mail/ și repornește sau reîncarcă serverul.

Exemplu de scenariu:

#!/usr/bin/env bash
DOMAIN="mail.example.com"
SRC="$HOME/.acme.sh/$DOMAIN"
DEST="/etc/ssl/mail"

sudo cp "$SRC/fullchain.cer" "$DEST/mail-fullchain.cer"
sudo cp "$SRC/$DOMAIN.key"   "$DEST/mail.key"
sudo chown root:root "$DEST/"*
sudo chmod 600 "$DEST/mail.key"

sudo systemctl restart postfix dovecot

Acest script copiază certificatul ACME nou emis și cheia privată în directorul mail SSL al serverului dvs., stabilește proprietatea și permisiunile corecte, apoi repornește Postfix și Dovecot astfel încât acestea să înceapă imediat să utilizeze certificatul actualizat. Utilizați acreditările dvs. în locul marcajelor.

Apoi conectați-l la acme.sh:

acme.sh --install-cert -d mail.example.com \
  --key-file       ~/.acme.sh/mail.example.com/mail.example.com.key \
  --fullchain-file ~/.acme.sh/mail.example.com/fullchain.cer \
  --reloadcmd "/path/to/your/deploy-script.sh"

De aici încolo, reînnoirile au loc automat.


Întrebări frecvente și depanare

Câteva probleme pot apărea atunci când faceți acest lucru prima dată. Iată cum să le rezolvați rapid.

De ce eșuează validarea ACME cu „neautorizat” sau „răspuns invalid”?

Acest lucru se întâmplă atunci când CA nu poate verifica înregistrarea TXT DNS. Verificați acest lucru:

  • Înregistrarea TXT este exact _acme-challenge.mail.example.com
  • Jetoanele nu au ghilimele sau spații suplimentare
  • DNS s-a propagat (dig TXT _acme-challenge.mail.example.com +short)
  • Nu ați confundat mail.example.com cu example.com

Dacă nu sunteți sigur, ștergeți înregistrarea TXT, rulați din nou acme.sh --issue și adăugați din nou valoarea exactă pe care v-o dă ACME.

De ce primesc „accountDoesNotExist” sau erori legate de EAB?

Acestea apar atunci când înregistrarea contului dvs. ACME nu se potrivește cu acreditările EAB de la CA.

Fix de:

  • Reverificarea URL-ului directorului ACME (producție vs staging)
  • Asigurați-vă că Key ID și HMAC sunt copiate exact, fără spații ascunse
  • Reexecutarea comenzii de înregistrare o dată cu valorile corecte

CA-urile comerciale resping orice înregistrare EAB care nu corespunde profilului lor emis.

De ce SMTP/IMAP afișează în continuare certificatul vechi?

Aceasta înseamnă că serviciul nu a reîncărcat noul certificat sau citește dintr-o cale diferită. Verificați:

  • Căile TLS din Postfix/Dovecot/Exim corespund fișierelor reale
  • Ați repornit serviciul corect (systemctl restart postfix dovecot exim4)
  • Nu există o a doua instanță, container sau proxy care să servească vechiul cert

Puteți verifica certificatul live utilizând:

openssl s_client -connect mail.example.com:465 -servername mail.example.com

Cuvinte finale

Cu această configurație, serverul dvs. de e-mail prezintă un certificat comercial ACME adecvat clienților SMTP și IMAP/POP3, în timp ce acme.sh se ocupă în liniște de reînnoiri în fundal. Păstrați controlul deplin asupra lanțului de certificate și a numelor de fișiere, utilizatorii dvs. nu mai văd avertismente de securitate și nu trebuie să vă conectați la fiecare câteva luni pentru a încărca manual fișiere noi.

După ce ați făcut-o o dată, puteți repeta același model pentru alte nume de gazdă, servere MX secundare sau stive de e-mail suplimentare utilizând același cont și proces ACME.

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.