Wie man Nginx mit Let’s Encrypt SSL auf Ubuntu sichert (Vollständiger 2025-Leitfaden)
HTTPS ist nicht mehr optional. Im Jahr 2025 benötigt jede Website SSL/TLS-Verschlüsselung — nicht nur zum Schutz von Benutzerdaten, sondern auch um wettbewerbsfähig in der Google-Suche zu ranken und moderne Browser-Sicherheitsanforderungen zu erfüllen. Let's Encrypt macht dies kostenlos möglich und bietet vertrauenswürdige, automatisch erneuernde SSL-Zertifikate, die nahtlos mit Nginx auf Ubuntu funktionieren.
Diese umfassende Anleitung führt Sie durch jeden Schritt: Installation von Certbot, Erhalt eines Let's Encrypt SSL-Zertifikats, Überprüfung Ihrer Konfiguration und Automatisierung von Erneuerungen — alles auf einem Ubuntu 18.04, 20.04 oder 22.04 Server mit Nginx.
Egal ob Sie eine VPS Hosting Umgebung oder einen dedizierten Webserver verwalten, dieses Tutorial bietet Ihnen ein produktionsreifes HTTPS-Setup in weniger als 15 Minuten.
Warum SSL für Nginx im Jahr 2025 wichtig ist
Bevor wir uns in die Befehle stürzen, lohnt es sich zu verstehen, was Sie durch die Sicherung von Nginx mit Let's Encrypt gewinnen:
- Datenverschlüsselung: HTTPS verschlüsselt den gesamten Datenverkehr zwischen Ihrem Server und Besuchern und verhindert Man-in-the-Middle-Angriffe und Abhören.
- SEO-Ranking-Signale: Google hat HTTPS als Ranking-Faktor bestätigt. Websites ohne SSL werden in den Suchergebnissen aktiv benachteiligt.
- Browser-Vertrauensindikatoren: Chrome, Firefox und Edge zeigen Warnungen „Nicht sicher” für HTTP-Websites an, was das Vertrauen der Benutzer zerstört und die Absprungrate erhöht.
- Kostenlos und automatisiert: Let's Encrypt stellt Zertifikate kostenlos aus, und Certbot verwaltet Verlängerungen automatisch – wodurch der manuelle Aufwand bezahlter Zertifikate entfällt.
- PCI DSS und Compliance: Jede Website, die Zahlungen oder persönliche Daten verarbeitet, ist gesetzlich verpflichtet, verschlüsselte Verbindungen zu verwenden.
Wenn Ihre Domain bereits registriert ist und auf Ihren Server verweist, können Sie beginnen. Wenn Sie noch eine Domain benötigen, bietet AlexHost erschwingliche Domain-Registrierung mit sofortiger DNS-Verwaltung.
Voraussetzungen
Stellen Sie sicher, dass die folgenden Bedingungen erfüllt sind, bevor Sie fortfahren:
| Anforderung | Details |
|---|---|
| Betriebssystem | Ubuntu 18.04, 20.04 oder 22.04 LTS |
| Webserver | Nginx installiert und aktiv Ihre Website bereitstellend |
| Domänenname | Eine registrierte Domäne mit einem A-Datensatz, der auf die öffentliche IP Ihres Servers verweist |
| Serverzugriff | SSH-Zugriff mit einem Benutzer, der sudo Berechtigungen hat |
| Firewall | Ports 80 (HTTP) und 443 (HTTPS) in UFW oder iptables offen |
| Root-Zugriff | Nicht unbedingt erforderlich, aber sudo Zugriff ist obligatorisch |
Überprüfen Sie, ob Nginx ausgeführt wird
Bestätigen Sie vor der Installation von Certbot, dass Nginx aktiv ist:
sudo systemctl status nginxSie sollten active (running) in der Ausgabe sehen. Wenn Nginx nicht installiert ist, führen Sie aus:
sudo apt update && sudo apt install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginxErforderliche Firewall-Ports öffnen
Wenn UFW aktiviert ist, erlauben Sie HTTP- und HTTPS-Verkehr:
sudo ufw allow 'Nginx Full'
sudo ufw reload
sudo ufw statusDie Ausgabe sollte Nginx Full als ALLOW für IPv4 und IPv6 anzeigen.
Schritt 1 — Installation von Certbot und dem Nginx Plugin
Certbot ist der offizielle Let’s Encrypt Client. Er automatisiert den gesamten Zertifikatlebenszyklus: Ausstellung, Installation und Erneuerung. Das python3-certbot-nginx Plugin ermöglicht es Certbot, Ihre Nginx-Konfiguration zu lesen und automatisch zu ändern.
Aktualisieren Sie Ihren Paketindex
Aktualisieren Sie immer Ihre Paketlisten, bevor Sie neue Software installieren:
sudo apt update
sudo apt upgrade -yInstallieren Sie Certbot mit dem Nginx Plugin
sudo apt install certbot python3-certbot-nginx -yÜberprüfen Sie die Installation
certbot --versionErwartete Ausgabe (Version kann variieren):
certbot 2.x.x> Hinweis für Ubuntu 18.04 Benutzer: Wenn die Standard-APT-Version von Certbot veraltet ist, installieren Sie über Snap für die neueste Version:
> “`bash
> sudo snap install –classic certbot
> sudo ln -s /snap/bin/certbot /usr/bin/certbot
> “`
Schritt 2 — Konfigurieren Ihres Nginx Server Block
Certbot muss Ihre Domain in der Nginx-Konfiguration erkennen, um sie automatisch zu ändern. Falls Sie noch keinen Server Block für Ihre Domain erstellt haben, erstellen Sie ihn jetzt.
Server Block erstellen
Ersetzen Sie yourdomain.com in diesem Leitfaden überall durch Ihren tatsächlichen Domainnamen:
sudo nano /etc/nginx/sites-available/yourdomain.comFügen Sie die folgende grundlegende Konfiguration hinzu:
server {
listen 80;
listen [::]:80;
server_name yourdomain.com www.yourdomain.com;
root /var/www/yourdomain.com/html;
index index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ =404;
}
}Server Block aktivieren
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/Nginx-Konfiguration testen
Validieren Sie Ihre Nginx-Konfiguration immer vor dem Neuladen:
sudo nginx -tErwartete Ausgabe:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulNginx neu laden
sudo systemctl reload nginxSchritt 3 — Abrufen eines Let’s Encrypt SSL-Zertifikats
Mit konfiguriertem Nginx und installiertem Certbot können Sie jetzt Ihr SSL-Zertifikat anfordern.
Certbot mit dem Nginx Plugin ausführen
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.comErklärung der Flags:
--nginx — Weist Certbot an, das Nginx Plugin für automatische Konfiguration zu verwenden
-d yourdomain.com — Gibt die primäre Domain an
-d www.yourdomain.com — Fügt die www Subdomain zum gleichen Zertifikat hinzu (Subject Alternative Name)
Interaktive Eingabeaufforderungen erklärt
Certbot führt Sie durch einen kurzen Setup-Assistenten:
1. E-Mail-Adresse
Enter email address (used for urgent renewal and security notices):
Geben Sie eine gültige E-Mail-Adresse an. Let’s Encrypt nutzt diese, um Sie über ablaufende Zertifikate und Sicherheitsprobleme zu benachrichtigen.
2. Nutzungsbedingungen
Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf
(A)gree/(C)ancel:
Geben Sie A ein und drücken Sie Enter.
3. EFF Newsletter (Optional)
Would you be willing to share your email address with the Electronic Frontier Foundation?
(Y)es/(N)o:
Dies ist optional. Geben Sie N ein, wenn Sie sich nicht anmelden möchten.
4. HTTP zu HTTPS Umleitung
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
1: No redirect
2: Redirect - Make all requests redirect to secure HTTPS access
Wählen Sie immer Option 2. Dies stellt sicher, dass alle Besucher automatisch auf HTTPS aktualisiert werden, wodurch Mixed-Content-Probleme beseitigt und die Sicherheit verbessert wird.
Erfolgreiche Ausgabe
Wenn alles korrekt konfiguriert ist, sehen Sie:
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/yourdomain.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/yourdomain.com/privkey.pem
This certificate expires on YYYY-MM-DD.
These files will be updated when the certificate renews.
Deploying certificate
Successfully deployed certificate for yourdomain.com to /etc/nginx/sites-available/yourdomain.com
Successfully deployed certificate for www.yourdomain.com to /etc/nginx/sites-available/yourdomain.com
Congratulations! You have successfully enabled HTTPS on https://yourdomain.com and https://www.yourdomain.com
Was Certbot in Nginx geändert hat
Nach der Ausführung fügt Certbot automatisch SSL-Direktiven zu Ihrem Server Block hinzu. Ihre Konfiguration sieht jetzt ähnlich aus wie folgt:
server {
server_name yourdomain.com www.yourdomain.com;
root /var/www/yourdomain.com/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
server {
if ($host = www.yourdomain.com) {
return 301 https://$host$request_uri;
}
if ($host = yourdomain.com) {
return 301 https://$host$request_uri;
}
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 404;
}
Schritt 4 — SSL-Installation verifizieren
Nach Abschluss von Certbot überprüfen Sie, dass Ihr SSL-Zertifikat korrekt installiert und funktionsfähig ist.
Methode 1: Browser-Überprüfung
Öffnen Sie Ihren Webbrowser und navigieren Sie zu https://yourdomain.com. Suchen Sie nach:
Vorhängeschloss-Symbol in der Adressleiste — bestätigt eine aktive, vertrauenswürdige SSL-Verbindung
Keine Sicherheitswarnungen — das Zertifikat ist gültig und wird von Ihrem Browser als vertrauenswürdig eingestuft
HTTPS in der URL — HTTP-Anfragen sollten automatisch zu HTTPS umgeleitet werden
Klicken Sie auf das Vorhängeschloss-Symbol und wählen Sie „Zertifikat”, um den Aussteller anzuzeigen (sollte „Let’s Encrypt” anzeigen) und das Ablaufdatum.
Methode 2: SSL Labs Deep Analysis
Für eine umfassende Sicherheitsprüfung verwenden Sie Qualys SSL Labs:
Navigieren Sie zu https://www.ssllabs.com/ssltest/Eine ordnungsgemäß konfigurierte Let’s Encrypt + Nginx-Einrichtung sollte eine Bewertung von A oder A+ erhalten. Wenn Sie eine niedrigere Bewertung erhalten, identifiziert SSL Labs die spezifischen Schwachstellen, die behoben werden müssen.
Methode 3: Befehlszeilenverifizierung
Überprüfen Sie die Zertifikatdetails direkt vom Terminal aus:
sudo certbot certificatesAusgabe:
Found the following certs:
Certificate Name: yourdomain.com
Serial Number: abc123...
Key Type: RSA
Domains: yourdomain.com www.yourdomain.com
Expiry Date: YYYY-MM-DD HH:MM:SS+00:00 (VALID: 89 days)
Certificate Path: /etc/letsencrypt/live/yourdomain.com/fullchain.pem
Private Key Path: /etc/letsencrypt/live/yourdomain.com/privkey.pemMethode 4: OpenSSL-Befehl
Überprüfen Sie die Zertifikatskette und das Ablaufdatum mit OpenSSL:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -dates -issuerErwartete Ausgabe:
notBefore=Mon Jan 1 00:00:00 2025 GMT
notAfter=Tue Apr 1 00:00:00 2025 GMT
issuer=C=US, O=Let's Encrypt, CN=R11Schritt 5 — Automatische Zertifikatverlängerung einrichten
Let's Encrypt-Zertifikate verfallen nach 90 Tagen. Diese kurze Gültigkeitsdauer ist beabsichtigt — sie begrenzt das Risiko, wenn ein privater Schlüssel kompromittiert wird. Certbot verwaltet Verlängerungen automatisch, aber Sie sollten überprüfen, dass die Automatisierung ordnungsgemäß funktioniert.
Wie die Certbot-Verlängerung funktioniert
Wenn Sie Certbot über APT oder Snap installieren, erstellt es automatisch einen systemd-Timer (oder Cron-Job auf älteren Systemen), der zweimal täglich ausgeführt wird. Er überprüft, ob Zertifikate innerhalb von 30 Tagen ablaufen, und erneuert sie automatisch.
Systemd-Timer überprüfen
sudo systemctl status certbot.timerErwartete Ausgabe:
● certbot.timer - Run certbot twice daily
Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
Active: active (waiting) since ...
Trigger: ...
Triggers: ● certbot.serviceWenn der Timer aktiv und aktiviert ist, ist die automatische Verlängerung bereits konfiguriert.
Verlängerungsprozess testen (Testlauf)
Bevor Sie sich auf die automatische Verlängerung verlassen, simulieren Sie diese, um zu bestätigen, dass alles funktioniert:
sudo certbot renew --dry-runErfolgreiche Ausgabe:
Simulating renewal of an existing certificate for yourdomain.com and www.yourdomain.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all simulated renewals succeeded:
/etc/letsencrypt/live/yourdomain.com/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Wenn der Testlauf erfolgreich ist, werden Ihre Zertifikate automatisch ohne manuelle Eingriffe verlängert.
Cron-Job überprüfen (Legacy-Systeme)
Überprüfen Sie auf älteren Ubuntu-Versionen, die keine systemd-Timer verwenden, den Certbot-Cron-Job:
sudo cat /etc/cron.d/certbotSie sollten eine Zeile ähnlich wie folgt sehen:
0 */12 * * * root test -x /usr/bin/certbot -a ! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renewDies führt Certbot zweimal täglich in zufälligen Intervallen aus, um eine Überlastung der Let's Encrypt-Server zu vermeiden.
Manuelle Verlängerung (falls erforderlich)
Falls Sie eine Verlängerung manuell erzwingen müssen:
sudo certbot renew --force-renewal
sudo systemctl reload nginx> Best Practice: Nach jeder Zertifikatverlängerung (manuell oder automatisch) laden Sie Nginx neu, um sicherzustellen, dass es die neuen Zertifikatsdateien aufgreift:
> “`bash
> sudo systemctl reload nginx
> “`
> Certbot-Verlängerungshooks handhaben dies in den meisten Konfigurationen automatisch.
Verlängerungshooks konfigurieren
Um sicherzustellen, dass Nginx nach jeder Verlängerung automatisch neu geladen wird, fügen Sie einen Deploy-Hook hinzu:
sudo nano /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.shFügen Sie den folgenden Inhalt hinzu:
#!/bin/bash
systemctl reload nginxMachen Sie es ausführbar:
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.shFehlerbehebung häufiger Probleme
Fehler: "Could not bind to IPv4/IPv6"
Certbot verwendet Port 80 zur Domain-Validierung. Wenn ein anderer Prozess Port 80 nutzt, schlägt die Überprüfung fehl.
Lösung: Stoppen Sie Nginx vorübergehend, beziehen Sie das Zertifikat im Standalone-Modus und starten Sie dann neu:
sudo systemctl stop nginx
sudo certbot certonly --standalone -d yourdomain.com -d www.yourdomain.com
sudo systemctl start nginxFehler: "DNS problem: NXDOMAIN looking up A for yourdomain.com"
Die DNS-Einträge Ihrer Domain werden noch nicht an die Validierungsserver von Let's Encrypt weitergeleitet.
Lösung: Überprüfen Sie, ob Ihr A-Eintrag korrekt gesetzt ist:
dig yourdomain.com A +shortDie Ausgabe sollte die öffentliche IP-Adresse Ihres Servers zurückgeben. Die DNS-Propagierung kann bis zu 48 Stunden dauern, wird aber normalerweise innerhalb von 1–2 Stunden gelöst.
Fehler: "Too many certificates already issued"
Let's Encrypt erzwingt ein Ratenlimit von 5 doppelten Zertifikaten pro Woche pro Domain.
Lösung: Verwenden Sie das --staging Flag, um Ihr Setup zu testen, ohne Ratenlimits zu erreichen:
sudo certbot --nginx --staging -d yourdomain.com -d www.yourdomain.comNach Abschluss der Tests widerrufen Sie das Staging-Zertifikat und stellen ein Produktionszertifikat aus.
Fehler: "Nginx configuration test failed"
Certbot ändert Ihre Nginx-Konfiguration. Wenn die resultierende Konfiguration Syntaxfehler aufweist, wird Nginx nicht neu geladen.
Lösung: Testen und beheben Sie die Konfiguration manuell:
sudo nginx -t
sudo nano /etc/nginx/sites-available/yourdomain.com
# Fix any syntax errors, then:
sudo systemctl reload nginxZertifikat wird nicht automatisch erneuert
Wenn Sie Ablauf-Warnmails erhalten, obwohl Certbot installiert ist, überprüfen Sie den Timer-Status:
sudo systemctl status certbot.timer
sudo journalctl -u certbot.service --since "7 days ago"Überprüfen Sie die Protokolle auf Fehler und beheben Sie diese entsprechend.
Erweitert: Härtung Ihrer Nginx SSL-Konfiguration
Die Standard-Let’s Encrypt + Certbot-Konfiguration ist sicher, aber Sie können sie für ein A+ SSL Labs-Ergebnis weiter härten.
HTTP/2 aktivieren
Bearbeiten Sie Ihren Server-Block, um HTTP/2 für verbesserte Leistung zu aktivieren:
listen 443 ssl http2;
listen [::]:443 ssl http2;HSTS (HTTP Strict Transport Security) hinzufügen
HSTS weist Browser an, immer HTTPS für Ihre Domain zu verwenden, auch wenn ein Benutzer http:// eingibt:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;Schwache Protokolle und Chiffren deaktivieren
Fügen Sie diese Direktiven zu Ihrem nginx.conf oder Server-Block hinzu:
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;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;Testen und laden Sie nach Änderungen immer neu:
sudo nginx -t && sudo systemctl reload nginxWahl des richtigen Hostings für Ihr Nginx + SSL Setup
Die Leistung und Zuverlässigkeit Ihres SSL-gesicherten Nginx-Servers hängt stark von der zugrunde liegenden Infrastruktur ab. So passen AlexHost’s Hosting-Optionen zu verschiedenen Anwendungsfällen:
- VPS Hosting — Ideal für die meisten Websites und Anwendungen. Vollständiger Root-Zugriff ermöglicht es Ihnen, Nginx und Certbot genau wie in dieser Anleitung beschrieben zu konfigurieren. AlexHost VPS-Pläne laufen auf Ubuntu 18.04, 20.04 und 22.04 LTS.
- Dedicated Servers — Am besten für Websites mit hohem Datenverkehr, die maximale Leistung, dedizierte Ressourcen und vollständige Hardware-Kontrolle erfordern. Führen Sie mehrere Nginx Virtual Hosts aus, jeder mit seinem eigenen Let’s Encrypt Zertifikat.
- VPS mit cPanel — Wenn Sie eine grafische Benutzeroberfläche zur Verwaltung von SSL-Zertifikaten zusammen mit Ihrem Web-Hosting bevorzugen, integriert sich cPanel mit Let’s Encrypt und verwaltet die Zertifikatausstellung über seine AutoSSL-Funktion.
- SSL Certificates — Für Unternehmensumgebungen, E-Commerce-Websites oder Anwendungen, die erweiterte Validierung (EV) oder Organisationsvalidierung (OV) Zertifikate erfordern, bietet AlexHost Premium-SSL-Zertifikate mit Garantiedeckung und dediziertem Support.
Fazit
Die Sicherung von Nginx mit einem Let’s Encrypt SSL-Zertifikat auf Ubuntu ist einer der wirkungsvollsten Schritte, die Sie unternehmen können, um Ihre Benutzer zu schützen, Ihre Suchmaschinen-Rankings zu verbessern und Vertrauen bei Ihrem Publikum aufzubauen. Der gesamte Prozess – von der Installation von Certbot bis zur Aktivierung automatischer Erneuerungen – dauert weniger als 15 Minuten und kostet nichts.
Hier ist eine Zusammenfassung dessen, was Sie in dieser Anleitung erreicht haben:
- ✅ Certbot und das Nginx-Plugin installiert
- ✅ Einen ordnungsgemäßen Nginx-Serverblock für Ihre Domain konfiguriert
- ✅ Ein vertrauenswürdiges Let’s Encrypt SSL-Zertifikat erhalten
- ✅ Das Zertifikat mit Browser-Tools, SSL Labs und OpenSSL verifiziert
- ✅ Automatische Erneuerung über systemd-Timer und Trockentest bestätigt
- ✅ Erweiterte Härtung für eine A+-Sicherheitsbewertung angewendet
Mit Ihrem nun gesicherten Nginx-Server sollten Sie zusätzliche Schutzebenen in Betracht ziehen: eine Web Application Firewall (WAF), fail2ban zum Schutz vor Brute-Force-Angriffen und regelmäßige Sicherheitsaudits. Wenn Sie mehrere Domains oder Anwendungen verwalten, bieten AlexHost’s VPS Control Panels eine optimierte Schnittstelle zur Verwaltung von SSL-Zertifikaten, virtuellen Hosts und Serverkonfigurationen, ohne die Flexibilität einer Linux-Umgebung zu opfern.
Ihre Benutzer verdienen eine sichere Verbindung. Jetzt haben sie eine.
bei allen Hosting-Diensten