Sparen Sie 15% bei allen Hosting-Diensten

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code: Skills Anfangen
Abschnitte
Linux Sicherheit

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:

AnforderungDetails
BetriebssystemUbuntu 18.04, 20.04 oder 22.04 LTS
WebserverNginx installiert und aktiv Ihre Website bereitstellend
DomänennameEine registrierte Domäne mit einem A-Datensatz, der auf die öffentliche IP Ihres Servers verweist
ServerzugriffSSH-Zugriff mit einem Benutzer, der sudo Berechtigungen hat
FirewallPorts 80 (HTTP) und 443 (HTTPS) in UFW oder iptables offen
Root-ZugriffNicht 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 nginx

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

Erforderliche Firewall-Ports öffnen

Wenn UFW aktiviert ist, erlauben Sie HTTP- und HTTPS-Verkehr:

sudo ufw allow 'Nginx Full'
sudo ufw reload
sudo ufw status

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

Installieren Sie Certbot mit dem Nginx Plugin

sudo apt install certbot python3-certbot-nginx -y

Überprüfen Sie die Installation

certbot --version

Erwartete 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.com

Fü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 -t

Erwartete Ausgabe:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Nginx neu laden

sudo systemctl reload nginx

Schritt 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.com

Erklä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/
  • Geben Sie Ihren Domainnamen ein
  • Klicken Sie auf „Submit”
  • 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 certificates

    Ausgabe:

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

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

    Erwartete 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=R11

    Schritt 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.timer

    Erwartete 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.service

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

    Erfolgreiche 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/certbot

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

    Dies 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.sh

    Fügen Sie den folgenden Inhalt hinzu:

    #!/bin/bash
    systemctl reload nginx

    Machen Sie es ausführbar:

    sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh

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

    Fehler: "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 +short

    Die 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.com

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

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

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

    1. ✅ Certbot und das Nginx-Plugin installiert
    2. ✅ Einen ordnungsgemäßen Nginx-Serverblock für Ihre Domain konfiguriert
    3. ✅ Ein vertrauenswürdiges Let’s Encrypt SSL-Zertifikat erhalten
    4. ✅ Das Zertifikat mit Browser-Tools, SSL Labs und OpenSSL verifiziert
    5. ✅ Automatische Erneuerung über systemd-Timer und Trockentest bestätigt
    6. ✅ 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.