Installer Let's Encrypt SSL-sertifikat for Nginx på RHEL 9/8


I denne artikkelen vil vi veilede deg om hvordan du genererer og installerer et SSL/TLS-sertifikat hentet gratis fra Let's Encrypt Certificate Authority som vi skal bruke for å sikre Nginx webserver HTTP-transaksjoner på RHEL og RHEL-baserte distribusjoner som Fedora, Rocky Linux og AlmaLinux.

Hvis du ønsker å installere La oss kryptere for Apache på RHEL og RHEL-baserte distribusjoner, følg denne veiledningen nedenfor:

Krav

  • Et registrert domenenavn med gyldige A DNS-poster for å peke tilbake til serverens offentlige IP-adresse.
  • Nginx-nettserver installert med SSL aktivert og Virtual Hosts aktivert (kun for flere domener eller underdomener).

Vårt testmiljøoppsett

Trinn 1: Installer Nginx Web Server i RHEL-systemer

1. På det første trinnet, i tilfelle du ikke har Nginx-demonen allerede installert, utsted kommandoene nedenfor med root-privilegier for å installere Nginx-nettserveren fra Epel-repositories.


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

Merk: Fedora-brukere trenger ikke å installere epel-depotet.

Trinn 2: Installer Let's Encrypt (Certbot) i RHEL Systems

2. Den raskeste metoden for å installere Let's Encrypt-klienten på Linux-systemer er ved å installere pakker certbot og python3-certbot-nginx fra epel-depotet .


dnf install certbot python3-certbot-nginx

3. Etter at certbot-klienten er installert, kontrollerer du den installerte versjonen av Let's Encrypt-programvaren ved å kjøre kommandoen nedenfor:


certbot --version

certbot 1.30.0

Trinn 3: Skaff et gratis Let's Encrypt SSL-sertifikat for Nginx

4. Prosessen med å skaffe et gratis SSL/TLS-sertifikat for Nginx vil gjøres manuelt ved å bruke La oss kryptere frittstående > plugin.

Denne metoden krever at port 80 må være ledig i løpet av tiden Let's Encrypt-klienten validerer serverens identitet og genererer sertifikater.

Så hvis Nginx allerede kjører, stopp daemonen med følgende kommando og kjør ss-verktøyet for å bekrefte at port 80 ikke lenger er i bruk i nettverksstakken.


service nginx stop
systemctl stop nginx
ss -tln

5. Nå er det på tide å få et gratis SSL-sertifikat fra La oss kryptere ved å kjøre kommandoen certbot med --nginx for å initialisere henting og konfigurasjon av Let's Encrypt sikkerhetssertifikat for Nginx-domener.


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

6. Til slutt, hvis alt gikk som det skulle, vil en gratulasjonsmelding vises på bash-terminalen din. Meldingen vil også vises når sertifikatet utløper.

Trinn 4: Installer Let's Encrypt SSL-sertifikat i Nginx

9. Nå som du eier et gratis SSL/TLS-sertifikat, er det på tide å installere det i Nginx-nettserveren for at domenet ditt skal kunne bruke det.

Alle nye SSL-sertifikater plasseres i /etc/letsencrypt/live/ under en katalog oppkalt etter domenenavnet ditt. Bruk ls-kommandoen for å liste opp sertifikatfilene som er utstedt for domenet ditt og identifisere dem.

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

10. For å installere sertifikatfilene i Nginx og aktivere SSL, åpne /etc/nginx/nginx.conf-filen for redigering og legg til setningene nedenfor etter den siste lyttelinjen fra server blokk. Bruk illustrasjonen nedenfor som veiledning.

vi /etc/nginx/nginx.conf

Nginx SSL-blokkutdrag:

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

Erstatt domenenavn-strengen for SSL-sertifikater for å matche ditt eget domene.

11. Til slutt starter du Nginx-tjenesten på nytt og besøker domenet ditt via HTTPS-protokollen på https://dittdomene. Siden skal lastes jevnt, uten sertifikatfeil.

systemctl restart nginx
service nginx restart

12. For å bekrefte SSL/TLS-sertifikatet og dets retthet, besøk følgende kobling:

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

13. Hvis du får et varsel om at serveren din støtter en svak DH-nøkkelutveksling og en samlet vurdering på B-grad, generer en ny Diffie-Hellman chiffer i katalogen /etc/nginx/ssl/ for å beskytte serveren din mot Logjam-angrepet ved å kjøre følgende kommandoer.

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

I dette eksemplet har vi brukt en 4096-bits nøkkel, som faktisk tar lang tid å generere og legger en ekstra overhead på serveren din og på SSL-håndtrykk.

I tilfelle det ikke er eksplisitt behov for å bruke en nøkkel så lenge og du ikke er for paranoid, bør du være trygg med en 2048-biters nøkkel.

14. Etter at DH-nøkkelen er generert, åpner du Nginx-konfigurasjonsfilen og legger til setningene nedenfor etter ssl_ciphers-linjen for å legge til DH-nøkkelen og øke sikkerhetsnivået til domenet ditt til en A+-grad.

vi /etc/nginx/nginx.conf

Legg til følgende blokkutdrag til 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. Start Nginx-tjenesten på nytt for å bruke endringer og teste SSL-sertifikatet på nytt ved å tømme den forrige resultatbufferen fra koblingen nevnt ovenfor.

systemctl restart nginx
service nginx restart

Trinn 5: Automatisk fornyelse av Nginx Free lar kryptere SSL-sertifikater

16. Let's Encrypt CA gir ut gratis SSL/TLS-sertifikater som er gyldige i 90 dager. Sertifikater kan fornyes manuelt og brukes før utløp ved bruk av webroot-plugin, uten å stoppe webserveren din, ved å utstede kommandoene nedenfor:


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

Når du kjører kommandoen ovenfor, må du erstatte example.com for å matche domenet ditt.

17. For å automatisk fornye sertifikatet før det utløper, oppretter du cron-jobben til en eksisterende crontab-fil.


crontab -e

Legg til følgende cron-jobb nederst i filen, som kjøres hver dag ved middagstid for å sjekke utløpet av sertifikatet og fornye det. Alternativet --quiet forteller certbot å ikke generere utdata.


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

Det er alt! Nå kan Nginx-serveren levere sikkert nettinnhold med et gratis SSL/TLS Let's Encrypt-sertifikat på nettstedet ditt.