Zoeken op website

Installeer het Let's Encrypt SSL-certificaat voor Nginx op RHEL 9/8


In dit artikel begeleiden we u bij het genereren en installeren van een SSL/TLS-certificaat dat gratis is verkregen van Let's Encrypt Certificate Authority en dat we zullen gebruiken om HTTP-transacties op de Nginx-webserver te beveiligen op RHEL en Op RHEL gebaseerde distributies zoals Fedora, Rocky Linux en AlmaLinux.

Als u Let's Encrypt voor Apache op RHEL en op RHEL gebaseerde distributies wilt installeren, volgt u onderstaande handleiding:

Vereisten

  • Een geregistreerde domeinnaam met geldige A DNS-records die verwijzen naar het openbare IP-adres van de server.
  • Nginx-webserver geïnstalleerd met SSL ingeschakeld en virtuele hosts ingeschakeld (alleen voor hosting met meerdere domeinen of subdomeinen).

Onze testomgeving instellen

Stap 1: Installeer Nginx Web Server in RHEL-systemen

1. Als je de Nginx daemon nog niet hebt geïnstalleerd, voer dan bij de eerste stap de onderstaande opdrachten uit met rootrechten om de Nginx-webserver vanuit Epel-repository's te installeren.


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

Opmerking: Fedora-gebruikers hoeven de epel-repository niet te installeren.

Stap 2: Installeer Let's Encrypt (Certbot) in RHEL-systemen

2. De snelste methode om de Let's Encrypt-client op Linux-systemen te installeren is door de pakketten certbot en python3-certbot-nginx te installeren vanuit de epel-repository .


dnf install certbot python3-certbot-nginx

3. Nadat de certbot-client is geïnstalleerd, verifieert u de geïnstalleerde versie van de Let's Encrypt-software door de onderstaande opdracht uit te voeren:


certbot --version

certbot 1.30.0

Stap 3: Verkrijg een gratis Let’s Encrypt SSL-certificaat voor Nginx

4. Het proces voor het verkrijgen van een gratis SSL/TLS-certificaat voor Nginx wordt handmatig uitgevoerd met behulp van Let's Encrypt Standalone > plug-in.

Deze methode vereist dat poort 80 vrij is gedurende de tijd dat de Let's Encrypt-client de identiteit van de server valideert en certificaten genereert.

Dus als Nginx al actief is, stop dan de daemon met de volgende opdracht en voer het ss-hulpprogramma uit om te bevestigen dat poort 80 niet langer in gebruik is in de netwerkstack.


service nginx stop
systemctl stop nginx
ss -tln

5. Nu is het tijd om een gratis SSL-certificaat van Let's Encrypt te verkrijgen door de opdracht certbot uit te voeren met --nginx om het ophalen en configureren van het Let's Encrypt-beveiligingscertificaat voor Nginx-domeinen te initialiseren.


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

6. Als alles naar wens is verlopen, wordt er uiteindelijk een felicitatie-infobericht weergegeven op je bash-terminal. Het bericht wordt ook weergegeven wanneer het certificaat verloopt.

Stap 4: Installeer het Let's Encrypt SSL-certificaat in Nginx

9. Nu u een gratis SSL/TLS-certificaat bezit, is het tijd om het in de Nginx-webserver te installeren, zodat uw domein het kan gebruiken.

Alle nieuwe SSL-certificaten worden geplaatst in /etc/letsencrypt/live/ onder een map die is vernoemd naar uw domeinnaam. Gebruik de opdracht ls om de certificaatbestanden weer te geven die voor uw domein zijn uitgegeven en deze te identificeren.

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

10. Om de certificaatbestanden in Nginx te installeren en SSL in te schakelen, opent u het bestand /etc/nginx/nginx.conf om te bewerken en voegt u de onderstaande instructies toe na de laatste luisterregel van serverblok. Gebruik de onderstaande afbeelding als richtlijn.

vi /etc/nginx/nginx.conf

Nginx SSL-blokfragment:

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

Vervang de tekenreeks domeinnaam voor SSL-certificaten zodat deze overeenkomt met uw eigen domein.

11. Start ten slotte de Nginx-service opnieuw op en bezoek uw domein via het HTTPS-protocol op https://uwdomein. De pagina zou soepel moeten laden, zonder enige certificaatfout.

systemctl restart nginx
service nginx restart

12. Om het SSL/TLS-certificaat en de juistheid ervan te verifiëren, gaat u naar de volgende link:

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

13. Als u een melding krijgt dat uw server een zwakke DH sleuteluitwisseling en een algemene beoordeling van B ondersteunt, genereer dan een nieuwe Diffie-Hellman-codering in de map /etc/nginx/ssl/ om uw server te beschermen tegen de Logjam-aanval door de volgende opdrachten uit te voeren.

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

In dit voorbeeld hebben we een sleutel van 4096 bits gebruikt, wat veel tijd in beslag neemt om te genereren en een extra overhead met zich meebrengt voor uw server en voor SSL-handshake.

Als het niet expliciet nodig is om een sleutel zo lang te gebruiken en u niet te paranoïde bent, moet u veilig zijn met een 2048 bitsleutel.

14. Nadat de DH sleutel is gegenereerd, opent u het Nginx-configuratiebestand en voegt u de onderstaande instructies toe na de regel ssl_ciphers om de DH-sleutel toe te voegen en verhoog het beveiligingsniveau van uw domein naar een A+-cijfer.

vi /etc/nginx/nginx.conf

Voeg het volgende blokfragment toe aan 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 de Nginx-service opnieuw om de wijzigingen toe te passen en test uw SSL-certificaat opnieuw door de vorige resultatencache via de hierboven genoemde link te wissen.

systemctl restart nginx
service nginx restart

Stap 5: Automatisch verlengen Nginx Free Laat SSL-certificaten coderen

16. Let’s Encrypt CA geeft gratis SSL/TLS certificaten vrij die 90 dagen geldig zijn. Certificaten kunnen handmatig worden vernieuwd en vóór de vervaldatum worden toegepast met behulp van de webroot-plug-in, zonder uw webserver te stoppen, door de onderstaande opdrachten te geven:


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

Wanneer u de bovenstaande opdracht uitvoert, zorg er dan voor dat u example.com vervangt zodat deze overeenkomt met uw domein.

17. Om het certificaat automatisch te vernieuwen voordat het verloopt, maakt u de cron-taak naar een bestaand crontab-bestand.


crontab -e

Voeg de volgende cronjob toe onderaan het bestand, die elke dag om 12.00 uur wordt uitgevoerd om de vervaldatum van het certificaat te controleren en te vernieuwen. De --quiet optie vertelt certbot om geen uitvoer te genereren.


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

Dat is alles! Nu kan de Nginx-server veilige webinhoud leveren met een gratis SSL/TLS Let's Encrypt-certificaat op uw website.