Website-Suche

Installieren Sie das Let’s Encrypt SSL-Zertifikat für Nginx auf RHEL 9/8


In diesem Artikel zeigen wir Ihnen, wie Sie ein SSL/TLS-Zertifikat generieren und installieren, das Sie kostenlos von Let's Encrypt Certificate Authority erhalten und das wir zum Sichern von Nginx-Webserver-HTTP-Transaktionen auf RHEL verwenden werden RHEL-basierte Distributionen wie Fedora, Rocky Linux und AlmaLinux.

Wenn Sie Let’s Encrypt für Apache auf RHEL und RHEL-basierten Distributionen installieren möchten, folgen Sie dieser Anleitung unten:

Anforderungen

  • Ein registrierter Domänenname mit gültigen A-DNS-Einträgen, die auf die öffentliche IP-Adresse des Servers verweisen.
  • Nginx-Webserver mit aktiviertem SSL und aktivierten virtuellen Hosts installiert (nur für das Hosten mehrerer Domänen oder Subdomänen).

Unser Testumgebungs-Setup

Schritt 1: Installieren Sie den Nginx-Webserver in RHEL-Systemen

1. Falls Sie den Nginx-Daemon noch nicht installiert haben, führen Sie im ersten Schritt die folgenden Befehle mit Root-Rechten aus, um den Nginx-Webserver aus den Epel-Repositorys zu installieren.


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

Hinweis: Fedora-Benutzer müssen das Epel-Repository nicht installieren.

Schritt 2: Installieren Sie Let’s Encrypt (Certbot) in RHEL-Systemen

2. Die schnellste Methode zur Installation des Let's Encrypt-Clients auf Linux-Systemen ist die Installation der Pakete certbot und python3-certbot-nginx aus dem Epel-Repository .


dnf install certbot python3-certbot-nginx

3. Nachdem der certbot-Client installiert wurde, überprüfen Sie die installierte Version der Let’s Encrypt-Software, indem Sie den folgenden Befehl ausführen:


certbot --version

certbot 1.30.0

Schritt 3: Besorgen Sie sich ein kostenloses Let’s Encrypt SSL-Zertifikat für Nginx

4. Der Prozess zum Erhalten eines kostenlosen SSL/TLS-Zertifikats für Nginx erfolgt manuell mithilfe von Let's Encrypt Standalone > Plugin.

Diese Methode erfordert, dass Port 80 während der Zeit, in der der Let’s Encrypt-Client die Identität des Servers validiert und Zertifikate generiert, frei sein muss.

Wenn Nginx also bereits ausgeführt wird, stoppen Sie den Daemon mit dem folgenden Befehl und führen Sie das SS-Dienstprogramm aus, um zu bestätigen, dass Port 80 im Netzwerkstapel nicht mehr verwendet wird.


service nginx stop
systemctl stop nginx
ss -tln

5. Jetzt ist es an der Zeit, ein kostenloses SSL-Zertifikat von Let's Encrypt zu erhalten, indem Sie den Befehl certbot mit --nginx ausführen um den Abruf und die Konfiguration des Let's Encrypt-Sicherheitszertifikats für Nginx-Domänen zu initialisieren.


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

6. Wenn schließlich alles so gelaufen ist, wie es sollte, wird auf Ihrem Bash-Terminal eine Glückwunsch-Infomeldung angezeigt. Die Meldung wird auch angezeigt, wenn das Zertifikat abläuft.

Schritt 4: Installieren Sie das SSL-Zertifikat von Let’s Encrypt in Nginx

9. Da Sie nun über ein kostenloses SSL/TLS-Zertifikat verfügen, ist es an der Zeit, es auf dem Nginx-Webserver zu installieren, damit Ihre Domain es verwenden kann.

Alle neuen SSL-Zertifikate werden in /etc/letsencrypt/live/ in einem Verzeichnis abgelegt, das nach Ihrem Domainnamen benannt ist. Verwenden Sie den Befehl ls, um die für Ihre Domäne ausgestellten Zertifikatsdateien aufzulisten und zu identifizieren.

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

10. Um die Zertifikatsdateien in Nginx zu installieren und SSL zu aktivieren, öffnen Sie die Datei /etc/nginx/nginx.conf zum Bearbeiten und fügen Sie die folgenden Anweisungen nach der letzten Listenzeile von hinzu Serverblock. Verwenden Sie die folgende Abbildung als Leitfaden.

vi /etc/nginx/nginx.conf

Auszug aus dem Nginx-SSL-Block:

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

Ersetzen Sie die Zeichenfolge Domänenname für SSL-Zertifikate so, dass sie mit Ihrer eigenen Domäne übereinstimmt.

11. Starten Sie abschließend den Nginx-Dienst neu und besuchen Sie Ihre Domain über das HTTPS-Protokoll unter https://yourdomain. Die Seite sollte reibungslos und ohne Zertifikatsfehler geladen werden.

systemctl restart nginx
service nginx restart

12. Um das SSL/TLS-Zertifikat und seine Richtigkeit zu überprüfen, besuchen Sie den folgenden Link:

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

13. Falls Sie eine Benachrichtigung erhalten, dass Ihr Server einen schwachen DH-Schlüsselaustausch und eine Gesamtbewertung der Note B unterstützt, erstellen Sie ein neues Diffie-Hellman-Verschlüsselung im Verzeichnis /etc/nginx/ssl/, um Ihren Server vor dem Logjam-Angriff zu schützen, indem Sie die folgenden Befehle ausführen.

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

In diesem Beispiel haben wir einen 4096-Bit-Schlüssel verwendet, dessen Generierung tatsächlich sehr lange dauert und einen zusätzlichen Overhead für Ihren Server und den SSL-Handshake verursacht.

Für den Fall, dass keine explizite Notwendigkeit besteht, einen Schlüssel so lange zu verwenden, und Sie nicht zu paranoid sind, sollten Sie mit einem 2048-Bit-Schlüssel auf der sicheren Seite sein.

14. Nachdem der DH-Schlüssel generiert wurde, öffnen Sie die Nginx-Konfigurationsdatei und fügen Sie die folgenden Anweisungen nach der Zeile ssl_ciphers hinzu, um den DH-Schlüssel hinzuzufügen Erhöhen Sie die Sicherheitsstufe Ihrer Domain auf die Note A+.

vi /etc/nginx/nginx.conf

Fügen Sie den folgenden Blockauszug zu Nginx.conf hinzu:

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. Starten Sie den Nginx-Dienst neu, um die Änderungen zu übernehmen und Ihr SSL-Zertifikat erneut zu testen, indem Sie den vorherigen Ergebniscache über den oben genannten Link löschen.

systemctl restart nginx
service nginx restart

Schritt 5: Nginx Free Lets Encrypt SSL-Zertifikate automatisch erneuern

16. Let’s Encrypt CA veröffentlicht kostenlose SSL/TLS-Zertifikate mit einer Gültigkeit von 90 Tagen. Zertifikate können mit dem Webroot-Plugin manuell erneuert und vor Ablauf angewendet werden, ohne Ihren Webserver anzuhalten, indem Sie die folgenden Befehle ausführen:


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

Stellen Sie beim Ausführen des obigen Befehls sicher, dass Sie example.com so ersetzen, dass es mit Ihrer Domain übereinstimmt.

17. Um das Zertifikat automatisch zu erneuern, bevor es abläuft, erstellen Sie den Cron-Job für eine vorhandene Crontab-Datei.


crontab -e

Fügen Sie am Ende der Datei den folgenden Cron-Job hinzu, der jeden Tag mittags ausgeführt wird, um den Ablauf des Zertifikats zu überprüfen und es zu erneuern. Die Option --quiet weist certbot an, keine Ausgabe zu generieren.


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

Das ist alles! Jetzt kann der Nginx-Server sichere Webinhalte mit einem kostenlosen SSL/TLS Let's Encrypt-Zertifikat auf Ihrer Website bereitstellen.