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.