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


U ovom članku ćemo vas uputiti kako generirati i instalirati SSL/TLS certifikat dobiven besplatno od Let's Encrypt Certificate Authority koji ćemo koristiti za osiguranje HTTP transakcija Nginx web poslužitelja na RHEL i Distribucije temeljene na RHEL-u kao što su Fedora, Rocky Linux i AlmaLinux.

Ako želite instalirati Let’s Encrypt za Apache na RHEL i distribucije temeljene na RHEL-u, slijedite ovaj vodič u nastavku:

Zahtjevi

  • Registrirani naziv domene s važećim A DNS zapisima koji upućuju na javnu IP adresu poslužitelja.
  • Nginx web poslužitelj instaliran s omogućenim SSL-om i omogućenim virtualnim domaćinima (samo za hosting više domena ili poddomena).

Postavljanje naše okoline za testiranje

Korak 1: Instalirajte Nginx web poslužitelj u RHEL sustavima

1. U prvom koraku, u slučaju da već nemate instaliran Nginx demon, izdajte donje naredbe s root privilegijama kako biste instalirali Nginx web poslužitelj iz Epelovih repozitorija.


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

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

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


dnf install certbot python3-certbot-nginx

3. Nakon što je klijent certbot instaliran, provjerite instaliranu verziju softvera Let’s Encrypt pokretanjem donje naredbe:


certbot --version

certbot 1.30.0

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

4. Postupak dobivanja besplatnog SSL/TLS certifikata za Nginx izvršit će se ručno korištenjem Let's Encrypt Standalone > dodatak.

Ova metoda zahtijeva da priključak 80 mora biti slobodan za vrijeme dok klijent Let’s Encrypt provjerava identitet poslužitelja i generira certifikate.

Dakle, ako je Nginx već pokrenut, zaustavite demona sljedećom naredbom i pokrenite ss uslužni program kako biste potvrdili da se port 80 više ne koristi 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 s --nginx za pokretanje dohvaćanja i konfiguracije Let's Encrypt sigurnosnog certifikata za Nginx domene.


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

6. Konačno, ako je sve prošlo kako je trebalo, na vašem bash terminalu bit će prikazana informativna poruka s čestitkom. Poruka će se također prikazati kada certifikat istekne.

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

9. Sada kada posjedujete besplatni SSL/TLS certifikat, vrijeme je da ga instalirate na Nginx web poslužitelj kako bi ga vaša domena mogla koristiti.

Svi novi SSL certifikati smješteni su u /etc/letsencrypt/live/ u direktoriju nazvanom prema nazivu vaše domene. Koristite naredbu ls za popis datoteka certifikata izdanih za vašu domenu i njihovu identifikaciju.

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 izjave u nastavku nakon posljednjeg retka slušanja iz blok poslužitelja. Koristite donju ilustraciju kao vodič.

vi /etc/nginx/nginx.conf

Nginx SSL blok izvadak:

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 niz naziv domene za SSL certifikate tako da odgovaraju vašoj domeni.

11. Na kraju ponovno pokrenite uslugu Nginx i posjetite svoju domenu putem HTTPS protokola na https://yourdomain. Stranica bi se trebala učitavati glatko, bez ikakve pogreške certifikata.

systemctl restart nginx
service nginx restart

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

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

13. U slučaju da dobijete obavijest da vaš poslužitelj podržava slabu razmjenu DH ključeva i ukupnu ocjenu B, generirajte novi < snažna>Diffie-Hellmanova šifra u direktoriju /etc/nginx/ssl/ za zaštitu vašeg poslužitelja od napada Logjam pokretanjem sljedećih naredbi.

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

U ovom smo primjeru upotrijebili 4096 bitni ključ, čije generiranje zapravo traje dugo i dodatno opterećuje vaš poslužitelj i SSL rukovanje.

U slučaju da nema izričite potrebe za korištenjem ovako dugog ključa i niste previše paranoični, trebali biste biti sigurni s 2048 bitnim ključem.

14. Nakon što je ključ DH generiran, otvorite Nginx konfiguracijsku datoteku i dodajte izjave u nastavku nakon retka ssl_ciphers kako biste dodali ključ DH i podignite razinu sigurnosti svoje domene na ocjenu A+.

vi /etc/nginx/nginx.conf

Dodajte sljedeći blok izvadak 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. Ponovno pokrenite uslugu Nginx kako biste primijenili promjene i ponovno testirali svoj SSL certifikat brisanjem prethodne predmemorije rezultata s gore navedene veze.

systemctl restart nginx
service nginx restart

Korak 5: Auto Renew Nginx Free omogućuje šifriranje SSL certifikata

16. Let’s Encrypt CA izdaje besplatne SSL/TLS certifikate koji vrijede 90 dana. Certifikati se mogu ručno obnoviti i primijeniti prije isteka pomoću webroot dodatka, bez zaustavljanja vašeg web poslužitelja, izdavanjem naredbi u nastavku:


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

Prilikom pokretanja gornje naredbe provjerite jeste li zamijenili example.com tako da odgovara vašoj domeni.

17. Kako biste automatski obnovili certifikat prije nego što istekne, kreirajte cron posao u postojećoj crontab datoteci.


crontab -e

Dodajte sljedeći cron posao na dno datoteke, koji će se pokretati svaki dan u podne radi provjere isteka certifikata i njegove obnove. Opcija --quiet govori certbotu da ne generira izlaz.


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

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