Instalirajte Let’s Encrypt SSL certifikat za Nginx na RHEL 9/8


U ovom članku ćemo vas uputiti kako da generirate i instalirate SSL/TLS certifikat dobijen besplatno od Let's Encrypt Certificate Authority koji ćemo koristiti za osiguranje HTTP transakcija Nginx web servera na RHEL i Distribucije zasnovane na RHEL-u kao što su Fedora, Rocky Linux i AlmaLinux.

Ako želite da instalirate Let’s Encrypt za Apache na RHEL i RHEL distribucijama, slijedite ovaj vodič u nastavku:

Zahtjevi

  • Registrirano ime domene s važećim A DNS zapisima koji upućuju na javnu IP adresu servera.
  • Nginx web server je instaliran sa omogućenim SSL-om i omogućenim virtuelnim hostovima (samo za više domena ili poddomena).

Naše podešavanje okruženja za testiranje

Korak 1: Instalirajte Nginx Web Server u RHEL Systems

1. U prvom koraku, u slučaju da nemate već instaliran Nginx demon, izdajte donje naredbe sa root privilegijama kako biste instalirali Nginx web server iz Epelovih spremišta.


------------- 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

Napomena: Fedora korisnici ne moraju instalirati epel spremište.

Korak 2: Instalirajte Let’s Encrypt (Certbot) u RHEL sisteme

2. Najbrži način instaliranja klijenta Let's Encrypt na Linux sisteme je instaliranje certbot i python3-certbot-nginx paketa iz epel spremišta .


dnf install certbot python3-certbot-nginx

3. Nakon što je klijent certbot instaliran, provjerite instaliranu verziju softvera Let’s Encrypt tako što ćete pokrenuti naredbu ispod:


certbot --version

certbot 1.30.0

Korak 3: Nabavite besplatni Let’s Encrypt SSL certifikat za Nginx

4. Proces dobijanja besplatnog SSL/TLS certifikata za Nginx obavit će se ručno korištenjem Let's Encrypt Standalone > dodatak.

Ova metoda zahtijeva da port 80 mora biti slobodan za vrijeme dok klijent Let’s Encrypt potvrđuje identitet servera i generiše certifikate.

Dakle, ako je Nginx već pokrenut, zaustavite demon sa sljedećom naredbom i pokrenite ss uslužni program da potvrdite da port 80 više nije u upotrebi u mrežnom stogu.


service nginx stop
systemctl stop nginx
ss -tln

5. Sada je vrijeme da dobijete besplatni SSL certifikat od Let's Encrypt pokretanjem naredbe certbot sa --nginx da inicijalizirate dohvaćanje i konfiguraciju sigurnosnog certifikata Let's Encrypt za Nginx domene.


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

6. Konačno, ako je sve prošlo kako treba, poruka čestitke će se prikazati na vašem bash terminalu. Poruka će se također prikazati kada će certifikat isteći.

Korak 4: Instalirajte Let’s Encrypt SSL certifikat u Nginx

9. Sada kada posjedujete besplatni SSL/TLS certifikat, vrijeme je da ga instalirate na Nginx web server kako bi ga vaša domena koristila.

Svi novi SSL certifikati smješteni su u /etc/letsencrypt/live/ u direktorij nazvan po imenu vaše domene. Koristite naredbu ls da navedete datoteke certifikata izdate za vašu domenu i identificirate ih.

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

10. Da biste instalirali datoteke certifikata u Nginx i omogućili SSL, otvorite datoteku /etc/nginx/nginx.conf za uređivanje i dodajte sljedeće izjave nakon posljednje linije za slušanje od blok servera. Koristite donju ilustraciju kao vodič.

vi /etc/nginx/nginx.conf

Nginx SSL blok izvod:

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';

Zamijenite string ime domene za SSL certifikate da odgovara vašoj domeni.

11. Konačno, ponovo pokrenite uslugu Nginx i posjetite svoju domenu putem HTTPS protokola na https://yourdomain. Stranica bi se trebala učitavati glatko, bez greške u certifikatu.

systemctl restart nginx
service nginx restart

12. Kako biste provjerili SSL/TLS certifikat i njegovu ispravnost posjetite sljedeći link:

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

13. U slučaju da dobijete obavještenje da vaš server podržava slabu razmjenu ključeva DH i ukupnu ocjenu B, generirajte novi Diffie-Hellman šifra u /etc/nginx/ssl/ direktoriju da zaštiti vaš server od Logjam napada pokretanjem sljedećih naredbi.

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

U ovom primjeru smo koristili 4096 bitni ključ, kojem je zapravo potrebno mnogo vremena da se generiše i stavlja dodatne troškove na vaš server i na SSL rukovanje.

U slučaju da nema eksplicitne potrebe da koristite ključ ovoliko dugo i niste paranoični, trebali biste biti sigurni s 2048 bitnim ključem.

14. Nakon što je DH ključ generiran, otvorite Nginx konfiguracijsku datoteku i dodajte sljedeće naredbe nakon ssl_ciphers reda kako biste dodali DH ključ i podignite nivo sigurnosti vaše domene na ocjenu A+.

vi /etc/nginx/nginx.conf

Dodajte sljedeći blok izvod u 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. Ponovo pokrenite uslugu Nginx da biste primijenili promjene i ponovo testirali svoj SSL certifikat brisanjem prethodnog keša rezultata sa gore spomenute veze.

systemctl restart nginx
service nginx restart

Korak 5: Automatsko obnavljanje Nginx besplatno omogućava šifriranje SSL certifikata

16. Let’s Encrypt CA objavljuje besplatne SSL/TLS certifikate koji vrijede 90 dana. Certifikati se mogu ručno obnoviti i primijeniti prije isteka koristeći webroot dodatak, bez zaustavljanja vašeg web servera, izdavanjem sljedećih naredbi:


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

Prilikom pokretanja gornje naredbe pobrinite se da zamijenite example.com tako da odgovara vašoj domeni.

17. Da biste automatski obnovili certifikat prije nego što istekne, kreirajte cron posao za postojeću crontab datoteku.


crontab -e

Dodajte sljedeći cron posao na dno datoteke, koji će se pokretati svaki dan u podne da provjerite isteka certifikata i obnovite ga. Opcija --quiet govori certbotu da ne generiše izlaz.


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

To je sve! Sada, Nginx server može isporučiti siguran web sadržaj s besplatnim certifikatom SSL/TLS Let’s Encrypt na vašoj web stranici.