bg-tutorials

Cum se instalează un certificat SSL pe CentOS

În acest ghid vei afla cum să instalezi un certificat SSL pe CentOS și pe succesorii săi din familia RHEL (AlmaLinux, Rocky Linux și CentOS Stream) folosind serverul web Apache httpd.

Am înregistrat și un videoclip care te ghidează prin întregul proces. Dacă preferi versiunea text, continuă lectura mai jos.


Generează un cod CSR

Când soliciți un certificat SSL, generezi mai întâi un CSR (Certificate Signing Request) și îl trimiți Autorității de Certificare. CSR-ul este un bloc de text care conține datele tale de contact și de domeniu și este asociat cu o cheie privată creată în același timp. Ai două opțiuni:

Trimite CSR-ul către Autoritatea de Certificare în timpul finalizării comenzii. După ce CA îl validează și emite certificatul tău, continuă cu instalarea de mai jos.

Instalează un certificat SSL pe CentOS / RHEL (Apache)

Atenție la versiuni: CentOS Linux 8 a ajuns la finalul suportului (End of Life) pe 31 decembrie 2021, iar CentOS Linux 7 a ajuns la EOL pe 30 iunie 2024. Pentru producție, rulează în schimb o distribuție din familia RHEL care beneficiază de suport: RHEL 8/9/10, AlmaLinux, Rocky Linux sau CentOS Stream. Toate acestea au aceeași structură Apache httpd, așa că pașii de mai jos se aplică tuturor.

Înainte să începi

După validare, Autoritatea de Certificare îți trimite prin e-mail fișierele certificatului. Asigură-te că ai pregătite aceste trei fișiere separate:

  • yourdomain.crt, certificatul SSL principal.
  • yourdomain.ca-bundle, certificatele intermediare (pachetul CA).
  • yourdomain.key, cheia privată pe care ai generat-o odată cu CSR-ul.

Important: nu include niciodată cheia privată în lanțul de certificate. Cheia rămâne într-un fișier separat, care poate fi citit doar de root.

Pasul 1: Instalează suportul TLS (mod_ssl)

Instalează mod_ssl, care adaugă suport TLS pentru Apache și creează o configurație TLS implicită la /etc/httpd/conf.d/ssl.conf:

sudo dnf install -y mod_ssl

Pe sistemele mai vechi care încă folosesc managerul de pachete yum, rulează în schimb sudo yum install -y mod_ssl.

Pasul 2: Plasează fișierele SSL

Copiază cheia privată în /etc/pki/tls/private/ și restricționează permisiunile astfel încât doar root să o poată citi:

sudo cp yourdomain.key /etc/pki/tls/private/
sudo chown root:root /etc/pki/tls/private/yourdomain.key
sudo chmod 600 /etc/pki/tls/private/yourdomain.key

Apoi, creează fișierul cu lanțul complet concatenand certificatul tău cu pachetul CA și plasează-l în /etc/pki/tls/certs/:

cat yourdomain.crt yourdomain.ca-bundle 
  | sudo tee /etc/pki/tls/certs/yourdomain-fullchain.crt > /dev/null

Fișierul cu lanțul complet trebuie să conțină doar certificatul public și lanțul intermediar, niciodată cheia privată.

Pasul 3: Configurează host-ul virtual TLS Apache

Poți fie să editezi fișierul implicit /etc/httpd/conf.d/ssl.conf creat de mod_ssl, fie (mai curat) să creezi un fișier dedicat pentru site-ul tău, de exemplu /etc/httpd/conf.d/yourdomain.conf. Deschide-l cu un editor de text:

sudo nano /etc/httpd/conf.d/yourdomain.conf

Adaugă un host virtual pe portul 80 care redirecționează tot traficul către HTTPS, urmat de host-ul virtual securizat de pe portul 443, care conține directivele SSL:

<VirtualHost *:80>
  ServerName yourdomain.com
  ServerAlias www.yourdomain.com
  Redirect permanent / https://yourdomain.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName yourdomain.com
  ServerAlias www.yourdomain.com
  DocumentRoot /var/www/yourdomain.com

  SSLEngine on
  SSLCertificateFile    /etc/pki/tls/certs/yourdomain-fullchain.crt
  SSLCertificateKeyFile /etc/pki/tls/private/yourdomain.key
</VirtualHost>
  • SSLCertificateFile, fișierul cu lanțul complet (certificat + intermediare). Pe Apache 2.4.8 și versiuni mai noi, această directivă unică înlocuiește vechea directivă SSLCertificateChainFile, acum depreciată.
  • SSLCertificateKeyFile, cheia privată creată odată cu CSR-ul.

Notă despre host-ul implicit: fișierul /etc/httpd/conf.d/ssl.conf al mod_ssl vine cu propriul <VirtualHost _default_:443>, care folosește un certificat autosemnat. Când adaugi un host *:443 specific pentru site, precum cel de mai sus, cererile care corespund ServerName-ului tău vor folosi certificatul tău, dar cererile HTTPS care nu se potrivesc (de exemplu, accesarea serverului prin adresa IP) vor recurge tot la host-ul implicit autosemnat. Dacă nu dorești acest comportament, comentează blocul <VirtualHost _default_:443> din ssl.conf sau setează-l să folosească propriul tău certificat.

Notă despre securizarea TLS: pe RHEL 8 și versiuni mai noi, Apache respectă politica de criptare la nivel de sistem, care dezactivează deja protocoalele învechite. Pentru a seta politica pe întregul server, rulează sudo update-crypto-policies --set DEFAULT (sau FUTURE pentru setări mai stricte). Dacă preferi să fixezi protocoalele la nivel de host virtual, adaugă SSLProtocol -all +TLSv1.2 +TLSv1.3 în blocul portului 443.

Pasul 4: Testează configurația Apache

Verifică întotdeauna sintaxa înainte de a reîncărca serviciul, deoarece o singură greșeală de tastare poate scoate site-ul offline:

sudo apachectl configtest

Ar trebui să vezi Syntax OK. (Comanda sudo httpd -t face același lucru.) Corectează orice eroare raportată înainte de a continua.

Pasul 5: Repornește Apache

Aplică modificările reîncărcând serviciul httpd (reîncărcarea activează noua configurație fără a întrerupe conexiunile active):

sudo systemctl reload httpd

Dacă httpd nu rula încă, pornește-l cu sudo systemctl enable --now httpd. Site-ul tău ar trebui acum să funcționeze prin HTTPS. Pentru a verifica rezultatul și a obține un raport de stare instantaneu, folosește SSL Checker.

Note pentru versiuni mai vechi de CentOS (7 și anterioare)

CentOS Linux 7, 6 și 8 au depășit toate finalul suportului (End of Life) și nu mai primesc actualizări de securitate, așa că migrează la o distribuție din familia RHEL care beneficiază de suport, imediat ce poți. Dacă trebuie totuși să lucrezi pe un server vechi, procesul este identic cu cel de mai sus, cu două diferențe:

  • Managerul de pachete: CentOS 7 și 6 folosesc yum în loc de dnf. Verifică dacă mod_ssl este deja instalat cu rpm -qa | grep mod_ssl, iar dacă nu, instalează-l cu sudo yum install -y mod_ssl.
  • Apache mai vechi decât 2.4.8: doar versiunile foarte vechi sunt anterioare lui 2.4.8. Acolo, păstrează certificatul și lanțul în fișiere separate și adaugă o a treia directivă, SSLCertificateChainFile, care să indice către pachetul CA (nu către certificatul tău):
SSLCertificateFile      /etc/pki/tls/certs/yourdomain.crt
SSLCertificateKeyFile   /etc/pki/tls/private/yourdomain.key
SSLCertificateChainFile /etc/pki/tls/certs/yourdomain.ca-bundle

Pe Apache 2.4.8 și versiuni mai noi (care acoperă orice versiune actualmente suportată), folosește în schimb directiva unică simplificată SSLCertificateFile cu lanțul complet, prezentată la Pasul 3.

De unde cumperi un certificat SSL pentru CentOS?

Cel mai bun loc de unde poți cumpăra un certificat SSL pentru serverul tău CentOS este un reseller SSL de încredere, precum SSL Dragon. Prețurile noastre se numără printre cele mai mici de pe piață și oferim reduceri periodice și oferte excelente pentru întreaga gamă de produse SSL, susținute de o asistență clienți excepțională. Toate certificatele noastre sunt compatibile cu CentOS și cu succesorii săi din familia RHEL.

SSL Dragon are grijă de securitatea datelor tale sensibile, astfel încât site-ul sau afacerea ta să poată prospera online.

Întrebări frecvente

Cum știu dacă un certificat SSL este instalat pe CentOS?

Conectează-te la site-ul tău cu OpenSSL și citește certificatul furnizat:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -dates
Dacă un certificat este instalat, comanda afișează emitentul acestuia și datele de valabilitate. Pentru a inspecta un fișier de certificat aflat pe disc, rulează în schimb openssl x509 -text -noout -in certificate.crt. Poți, de asemenea, să listezi host-urile virtuale active din Apache cu sudo apachectl -S, sau să deschizi site-ul într-un browser și să verifici lacătul.

Unde sunt stocate certificatele SSL pe CentOS?

Prin convenție, certificatele se află în /etc/pki/tls/certs/, iar cheile private în /etc/pki/tls/private/. Acestea sunt locațiile implicite pentru familia RHEL; poți folosi și alte locații, atât timp cât host-ul virtual indică spre ele.

Unde se află configurația SSL Apache pe CentOS?

Modulul TLS instalează setările implicite la /etc/httpd/conf.d/ssl.conf, iar configurația principală Apache este /etc/httpd/conf/httpd.conf. Poți adăuga host-urile virtuale în ssl.conf, dar este mai curat să creezi un fișier separat pentru fiecare site, precum /etc/httpd/conf.d/yourdomain.conf. Orice fișier .conf din /etc/httpd/conf.d/ este încărcat automat. Jurnalele Apache se află în /var/log/httpd/.

Trebuie să combin certificatul și pachetul CA pe CentOS?

Pe Apache 2.4.8 și versiuni ulterioare (orice versiune actualmente suportată din familia RHEL), da: concatenează certificatul și pachetul CA într-un singur fișier cu lanțul complet și indică SSLCertificateFile către acesta. Directiva separată SSLCertificateChainFile este depreciată și este necesară doar pe versiunile Apache mai vechi de 2.4.8.

Cum instalez OpenSSL pe CentOS?

OpenSSL vine preinstalat pe CentOS și pe orice altă distribuție Linux importantă, așa că de obicei nu este nevoie să-l instalezi. Dacă lipsește, adaugă-l cu sudo dnf install -y openssl (sau sudo yum install -y openssl pe CentOS 7 și versiuni anterioare). Află mai multe despre OpenSSL și liniile sale de comandă.

Concluzie

Instalarea unui certificat SSL pe CentOS sau RHEL cu Apache se reduce la instalarea mod_ssl, plasarea cheii private și a certificatului cu lanțul complet în /etc/pki/tls/, configurarea blocului <VirtualHost *:443> în /etc/httpd/conf.d/, testarea cu sudo apachectl configtest și reîncărcarea cu sudo systemctl reload httpd. Ai nevoie mai întâi de un certificat? Răsfoiește certificatele noastre SSL.

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.