In diesem Artikel haben wir die notwendigen Schritte zum Sichern von Nginx mit let’s encrypt auf CentOS 8 erklärt. Bevor Sie mit diesem Tutorial fortfahren, stellen Sie sicher, dass Sie als Benutzer mit angemeldet sind sudo
Privilegien. Alle Befehle in diesem Tutorial sollten als Nicht-Root-Benutzer ausgeführt werden.
Let's Encrypt ist eine Zertifizierungsstelle, die kostenlose SSL-Zertifikate für die Website bereitstellt, die seit April 2016 in Betrieb ist und von Unternehmen und Internetorganisationen der Welt wie Mozilla, Cisco, Chrome unterstützt wird , Akamai usw.
Voraussetzung:
- Betriebssystem mit CentOS Linux
- Server-IPv4-Adresse mit Superuser-Berechtigungen (Root-Zugriff)
- Gnome-Terminal für Linux-Desktop
- PuTTy SSH-Client für Windows oder macOS
- Powershell für Windows 10/11
- Vertraut mit DNF-Befehlen
Nginx mit Let’s Encrypt auf CentOS sichern
Schritt 1. Der erste Befehl aktualisiert die Paketlisten, um sicherzustellen, dass Sie die neueste Version und Abhängigkeiten erhalten.
sudo dnf install epel-release sudo dnf update sudo dnf install mod_ssl openssl
Vor der Installation der Let’s Encrypt SSL-Domain sollte gut zugegriffen werden und der virtuelle Nginx-Host verwendet werden. Lesen Sie das Tutorial zur Installation von Nginx unter CentOS 8.
Schritt 2. Certbot installieren.
Das certbot-Paket ist nicht in den standardmäßigen CentOS 8-Repositories enthalten, kann aber von der Website des Anbieters heruntergeladen werden:
sudo wget -P /usr/local/bin https://dl.eff.org/certbot-auto sudo chmod +x /usr/local/bin/certbot-auto
Generieren Sie als Nächstes einen neuen Satz von 2048-Bit-DH-Parametern mit dem folgenden Befehl:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Um ein SSL-Zertifikat für die Domain zu erhalten, verwenden wir das Webroot-Plugin, das funktioniert, indem es eine temporäre Datei zur Validierung der angeforderten Domain erstellt das Verzeichnis ${webroot-path}/.well-known/acme-challenge:
sudo mkdir -p /var/lib/letsencrypt/.well-known sudo chgrp nginx /var/lib/letsencrypt sudo chmod g+s /var/lib/letsencrypt
Um doppelten Code zu vermeiden, erstellen Sie die folgenden zwei Snippets, die in alle Blockdateien des Nginx-Servers aufgenommen werden:
sudo mkdir /etc/nginx/snippets
$ nano /etc/nginx/snippets/letsencrypt.conf location ^~ /.well-known/acme-challenge/ { allow all; root /var/lib/letsencrypt/; default_type "text/plain"; try_files $uri =404; }
$ nano /etc/nginx/snippets/ssl.conf ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 30s; add_header Strict-Transport-Security "max-age=63072000" always; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff;
Sobald die Snippets erstellt sind, öffnen Sie den Domänenserverblock und fügen Sie das letsencrypt.conf-Snippet ein, wie unten gezeigt:
$ nano /etc/nginx/conf.d/example.com.conf server { listen 80; server_name example.com www.example.com; include snippets/letsencrypt.conf; }
Nginx-Konfiguration neu laden, damit die Änderungen wirksam werden:
sudo systemctl reload nginx
Führen Sie dann diesen Befehl aus, um ein Zertifikat zu erhalten, und lassen Sie Certbot Ihre Nginx-Konfiguration automatisch bearbeiten, um es bereitzustellen, und aktivieren Sie den HTTPS-Zugriff in einem einzigen Schritt:
sudo /usr/local/bin/certbot-auto certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d your-domain.com -d www.your-domain.com
Zum Schluss bearbeiten Sie Ihren Domain-Server-Block wie folgt:
$ nano /etc/nginx/conf.d/example.com.conf server { listen 80; server_name www.your-domain.com your-domain.com; include snippets/letsencrypt.conf; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name www.your-domain.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; return 301 https://example.com$request_uri; } server { listen 443 ssl http2; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; # . . . other code }
Laden Sie den Nginx-Dienst neu, damit die Änderungen wirksam werden:
sudo systemctl reload nginx
Schritt 4. Überprüfen Sie Ihren Zertifikatsstatus.
Sie können sicherstellen, dass Certbot Ihr SSL-Zertifikat korrekt erstellt hat, indem Sie den SSL-Server-Test des Cloud-Sicherheitsunternehmens Qualys verwenden. Öffnen Sie den folgenden Link in Ihrem bevorzugten Webbrowser und ersetzen Sie your-domain.com
mit Ihrer Basisdomain:
https://www.ssllabs.com/ssltest/analyze.html?d=your-domain.com
Herzlichen Glückwunsch, Sie haben gelernt, wie man Nginx mit let’s encrypt unter CentOS 8 sichert. Wenn Sie Fragen haben, hinterlassen Sie bitte unten einen Kommentar.