Instalați Let’s Encrypt SSL Certificate pentru Nginx pe RHEL 9/8


În acest articol, vă vom ghida despre cum să generați și să instalați un certificat SSL/TLS obținut gratuit de la Let's Encrypt Certificate Authority pe care îl vom folosi pentru a securiza tranzacțiile HTTP pe serverul web Nginx pe RHEL și Distribuții bazate pe RHEL, cum ar fi Fedora, Rocky Linux și AlmaLinux.

Dacă doriți să instalați Let’s Encrypt pentru Apache pe distribuții RHEL și bazate pe RHEL, urmați acest ghid de mai jos:

Cerințe

  • Un nume de domeniu înregistrat cu înregistrări DNS A valide pentru a indica adresa IP publică a serverului.
  • Serverul web Nginx instalat cu SSL activat și gazde virtuale activate (numai pentru mai multe domenii sau subdomenii de găzduire).

Configurarea mediului nostru de testare

Pasul 1: Instalați serverul web Nginx în sistemele RHEL

1. La primul pas, în cazul în care nu aveți deja instalat demonul Nginx, lansați comenzile de mai jos cu privilegii root pentru a instala serverul web Nginx din depozitele Epel.


------------- On RHEL, Rocky & AlmaLinux 9 ------------- 
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

------------- On RHEL, Rocky & AlmaLinux 8 -------------
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

------------- Install Nginx Web Server -------------
yum install nginx

Notă: utilizatorii Fedora nu trebuie să instaleze depozitul epel.

Pasul 2: Instalați Let’s Encrypt (Certbot) în sistemele RHEL

2. Cea mai rapidă metodă de instalare a clientului Let's Encrypt pe sisteme Linux este prin instalarea pachetelor certbot și python3-certbot-nginx din depozitul epel. .


dnf install certbot python3-certbot-nginx

3. După ce clientul certbot a fost instalat, verificați versiunea instalată a software-ului Let’s Encrypt executând comanda de mai jos:


certbot --version

certbot 1.30.0

Pasul 3: Obțineți un certificat SSL gratuit Let’s Encrypt pentru Nginx

4. Procesul de obținere a unui Certificat SSL/TLS gratuit pentru Nginx se va face manual utilizând Let's Encrypt Standalone > plugin.

Această metodă necesită ca portul 80 să fie liber în timpul în care clientul Let’s Encrypt validează identitatea serverului și generează certificate.

Deci, dacă Nginx rulează deja, opriți demonul cu următoarea comandă și rulați utilitarul ss pentru a confirma că portul 80 nu mai este utilizat în stiva de rețea.


service nginx stop
systemctl stop nginx
ss -tln

5. Acum este timpul să obțineți un certificat SSL gratuit de la Let's Encrypt rulând comanda certbot cu --nginx pentru a inițializa preluarea și configurarea certificatului de securitate Let's Encrypt pentru domeniile Nginx.


certbot --nginx
Or
certbot --nginx -d example.com -d www.example.com

6. În cele din urmă, dacă totul a mers așa cum ar trebui, pe terminalul tău bash va fi afișat un mesaj informativ de felicitare. Mesajul va fi afișat și când certificatul va expira.

Pasul 4: Instalați Let’s Encrypt SSL Certificate în Nginx

9. Acum că dețineți un Certificat SSL/TLS gratuit, este timpul să îl instalați pe serverul web Nginx pentru ca domeniul dvs. să-l folosească.

Toate certificatele SSL noi sunt plasate în /etc/letsencrypt/live/ sub un director numit după numele dvs. de domeniu. Utilizați comanda ls pentru a lista fișierele certificate emise pentru domeniul dvs. și pentru a le identifica.

sudo ls /etc/letsencrypt/live/
sudo ls -al /etc/letsencrypt/live/your_domain.tld

10. Pentru a instala fișierele de certificat în Nginx și a activa SSL, deschideți fișierul /etc/nginx/nginx.conf pentru editare și adăugați declarațiile de mai jos după ultima linie de ascultare de la bloc de server. Utilizați ilustrația de mai jos ca ghid.

vi /etc/nginx/nginx.conf

Extras bloc Nginx SSL:

SSL configuration
listen 443 ssl default_server;
ssl_certificate /etc/letsencrypt/live/your_domain.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain.tld/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

Înlocuiți șirul nume de domeniu pentru certificatele SSL pentru a se potrivi cu propriul domeniu.

11. În cele din urmă, reporniți serviciul Nginx și vizitați-vă domeniul prin protocolul HTTPS la https://yourdomain. Pagina ar trebui să se încarce fără probleme, fără nicio eroare de certificat.

systemctl restart nginx
service nginx restart

12. Pentru a verifica certificatul SSL/TLS și corectitudinea acestuia, accesați următorul link:

https://www.ssllabs.com/ssltest/analyze.html 

13. În cazul în care primiți o notificare că serverul dvs. acceptă un schimb de chei DH slab și o evaluare generală de nota B, generați un nou < CifrareDiffie-Hellman în directorul /etc/nginx/ssl/ pentru a vă proteja serverul împotriva atacului Logjam prin rularea următoarelor comenzi.

mkdir /etc/nginx/ssl
cd /etc/nginx/ssl
openssl dhparam -out dhparams.pem 4096

În acest exemplu, am folosit o cheie de 4096 biți, care, de fapt, durează mult timp pentru a genera și pune o supraîncărcare suplimentară pe server și pe SSL handshake.

În cazul în care nu este nevoie explicită de a folosi o cheie atât de lungă și nu sunteți paranoic, ar trebui să fiți în siguranță cu o cheie de 2048 biți.

14. După ce cheia DH a fost generată, deschideți fișierul de configurare Nginx și adăugați instrucțiunile de mai jos după linia ssl_ciphers pentru a adăuga cheia DH și ridicați nivelul de securitate al domeniului dvs. la un nivel A+.

vi /etc/nginx/nginx.conf

Adăugați următorul fragment de bloc la Nginx.conf:

ssl_dhparam /etc/nginx/ssl/dhparams.pem;
ssl_session_timeout 30m;
ssl_session_cache shared:SSL:10m;
ssl_buffer_size 8k;
add_header Strict-Transport-Security max-age=31536000;

15. Reporniți serviciul Nginx pentru a aplica modificări și a retesta certificatul dvs. SSL, ștergând memoria cache a rezultatelor anterioare din linkul menționat mai sus.

systemctl restart nginx
service nginx restart

Pasul 5: Reînnoire automată Nginx Free Permite criptarea certificatelor SSL

16. Let’s Encrypt CA eliberează certificate SSL/TLS gratuite, valabile 90 de zile. Certificatele pot fi reînnoite manual și aplicate înainte de expirare folosind plugin-ul webroot, fără a opri serverul dvs. web, lansând comenzile de mai jos:


certbot --nginx -d example.com -d www.example.com
systemctl reload nginx

Când rulați comanda de mai sus, asigurați-vă că înlocuiți example.com pentru a se potrivi cu domeniul dvs.

17. Pentru a reînnoi automat certificatul înainte de a expira, creați jobul cron într-un fișier crontab existent.


crontab -e

Adăugați următoarea lucrare cron în partea de jos a fișierului, care va rula în fiecare zi la prânz pentru a verifica expirarea certificatului și a-l reînnoi. Opțiunea --quiet îi spune certbot-ului să nu genereze rezultate.


0 12 * * * /usr/bin/certbot renew --quiet

Asta e tot! Acum, serverul Nginx poate furniza conținut web securizat cu un certificat gratuit SSL/TLS Let’s Encrypt pe site-ul dvs.