15%

15% auf alle Hosting-Dienste sparen

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

Benutze den Code:

Skills
Anfangen
30.10.2024

Wie man ein SSL-Zertifikat in Nginx einrichtet: Eine vollständige Schritt-für-Schritt-Anleitung

Die Absicherung Ihrer Website mit einem SSL/TLS-Zertifikat ist keine Option mehr – sie ist eine grundlegende Voraussetzung für das Vertrauen der Nutzer, den Datenschutz und das Suchmaschinenranking. Google nutzt HTTPS seit 2014 explizit als Rankingsignal, und moderne Browser warnen Besucher aktiv, wenn einer Website die Verschlüsselung fehlt. Wenn Sie Nginx als Webserver betreiben, führt Sie dieser Leitfaden durch alles, was Sie wissen müssen, um SSL-Zertifikate mit Certbot und Let’s Encrypt zu installieren, zu konfigurieren und zu automatisieren.

Ob Sie eine VPS Hosting-Umgebung, einen dedizierten Server oder einen Shared-Hosting-Plan verwalten – ein korrekt konfiguriertes SSL ist für jede produktive Website unerlässlich.

Was ist ein SSL-Zertifikat und warum benötigt Nginx eines?

Ein SSL-Zertifikat (Secure Sockets Layer) – heute genauer als TLS-Zertifikat (Transport Layer Security) bezeichnet – stellt eine verschlüsselte Verbindung zwischen Ihrem Webserver und dem Browser eines Besuchers her. Diese Verschlüsselung stellt sicher, dass sensible Daten wie Anmeldedaten, Zahlungsinformationen und persönliche Details nicht von böswilligen Dritten abgefangen werden können.

Für Nginx umfasst die SSL-Konfiguration insbesondere:

  • Zertifikatsdateien: Die öffentliche Zertifikatskette, die von einer Zertifizierungsstelle (CA) ausgestellt wurde
  • Privater Schlüssel: Ein kryptografisch generierter Schlüssel, der sicher auf Ihrem Server gespeichert wird
  • Server-Block-Direktiven: Nginx-Konfigurationsanweisungen, die das Zertifikat an Ihre Domain binden

Ohne SSL wird Ihre Website über HTTP bereitgestellt, was bedeutet, dass der gesamte Datenverkehr im Klartext übertragen wird. Mit korrekt konfiguriertem SSL verwendet Ihre Website HTTPS – verschlüsselt, authentifiziert und von Browsern sowie Suchmaschinen gleichermaßen als vertrauenswürdig eingestuft.

> Profi-Tipp: Wenn Sie Hosting-Optionen evaluieren, bietet AlexHost SSL-Zertifikate für Domains aller Art an, einschließlich Domain Validation (DV)-, Organization Validation (OV)- und Extended Validation (EV)-Zertifikate.

Voraussetzungen vor dem Start

Bevor Sie mit den Konfigurationsschritten beginnen, stellen Sie sicher, dass die folgenden Bedingungen erfüllt sind:

  • Ein laufender Nginx-Webserver auf einem Linux-basierten System (Ubuntu 20.04/22.04 oder Debian empfohlen)
  • Root- oder sudo-Zugriff auf Ihren Server
  • Ein registrierter Domainname, der über DNS-A-Records auf die IP-Adresse Ihres Servers zeigt – Sie können einen über Domain-Registrierung registrieren
  • Geöffnete Firewall-Ports: TCP-Ports 80 (HTTP) und 443 (HTTPS) müssen erreichbar sein
  • Ein Nicht-Root-Benutzer mit sudo-Rechten (Best Practice für die Serversicherheit)

Sie können überprüfen, ob Nginx läuft, mit:

sudo systemctl status nginx

Und bestätigen, dass Ihre Domain korrekt aufgelöst wird, mit:

dig yourdomain.com +short

Schritt 1: Certbot auf Ihrem Server installieren

Certbot ist der offizielle Open-Source-Client für Let’s Encrypt – eine kostenlose, automatisierte und weithin vertrauenswürdige Zertifizierungsstelle. Er übernimmt den gesamten Prozess der Zertifikatsausstellung, einschließlich Domain-Validierung und Nginx-Konfigurationsaktualisierungen.

Ihren Paketindex aktualisieren

Beginnen Sie immer damit, Ihre Paketlisten zu aktualisieren, um sicherzustellen, dass Sie die neuesten verfügbaren Versionen installieren:

sudo apt update && sudo apt upgrade -y

Certbot und das Nginx-Plugin installieren

Das python3-certbot-nginx-Plugin ermöglicht es Certbot, Ihre Nginx-Konfigurationsdateien direkt zu lesen und zu ändern, wodurch ein Großteil des Einrichtungsprozesses automatisiert wird:

sudo apt install certbot python3-certbot-nginx -y

Die Installation überprüfen

Bestätigen Sie, dass Certbot erfolgreich installiert wurde, indem Sie seine Version überprüfen:

certbot --version

Sie sollten eine Ausgabe ähnlich wie certbot 2.x.x sehen.

Schritt 2: HTTPS-Datenverkehr durch Ihre Firewall erlauben

Wenn Sie UFW (Uncomplicated Firewall) verwenden, müssen Sie HTTPS-Datenverkehr explizit erlauben, bevor Sie fortfahren:

sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'
sudo ufw status

Das Nginx Full-Profil erlaubt sowohl HTTP (Port 80) als auch HTTPS (Port 443). Das Entfernen der eigenständigen HTTP-Regel stellt sicher, dass Sie nach der SSL-Konfiguration keine unnötigen Ports ohne Zweck offen lassen.

Schritt 3: Ihr SSL-Zertifikat von Let’s Encrypt beziehen

Mit installiertem Certbot und konfigurierter Firewall können Sie nun ein Zertifikat anfordern. Das --nginx-Flag weist Certbot an, das Nginx-Plugin zu verwenden, das die ACME-Challenge-Verifizierung automatisch durchführt und Ihre Serverkonfiguration aktualisiert.

sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

Was passiert während dieses Prozesses?

  1. Domain-Eigentümerschaftsverifizierung: Certbot modifiziert vorübergehend Ihre Nginx-Konfiguration, um eine Challenge-Datei bereitzustellen, und beweist Let’s Encrypt gegenüber, dass Sie die Domain kontrollieren
  2. Zertifikatsausstellung: Let’s Encrypt stellt ein signiertes Zertifikat aus, das 90 Tage gültig ist
  3. Automatische Nginx-Konfiguration: Certbot aktualisiert Ihren Nginx-Server-Block, um die neuen Zertifikatsdateien zu verwenden

Interaktive Eingabeaufforderungen

Während des Prozesses fragt Certbot nach:

  • Einer E-Mail-Adresse für dringende Erneuerungs- und Sicherheitshinweise
  • Zustimmung zu den Nutzungsbedingungen
  • Ob HTTP auf HTTPS umgeleitet werden soll — wählen Sie immer Option 2 (Weiterleitung), um HTTPS siteübergreifend zu erzwingen

Ihre Zertifikate werden gespeichert in:

/etc/letsencrypt/live/yourdomain.com/

Die wichtigsten Dateien sind:

DateiZweck
fullchain.pemIhr Zertifikat + Zwischenzertifikatskette
privkey.pemIhr privater Schlüssel (halten Sie diesen geheim)
cert.pemNur Ihr Domain-Zertifikat
chain.pemNur Zwischenzertifikate

Schritt 4: Nginx manuell für SSL konfigurieren (Fortgeschritten)

Obwohl Certbot den Großteil der Konfiguration automatisiert, gibt Ihnen das Verständnis der manuellen Einrichtung die vollständige Kontrolle über Ihre SSL-Implementierung – unerlässlich für Performance-Tuning, Sicherheitshärtung und benutzerdefinierte Deployments.

Ihre Nginx-Server-Block-Konfiguration öffnen

sudo nano /etc/nginx/sites-available/yourdomain.com

Wenn Sie die Standard-Konfigurationsdatei verwenden:

sudo nano /etc/nginx/sites-available/default

Vollständige SSL-Server-Block-Konfiguration

Ersetzen oder aktualisieren Sie Ihre Konfiguration mit dem folgenden gehärteten Beispiel:

# Redirect all HTTP traffic to HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name yourdomain.com www.yourdomain.com;
    return 301 https://$host$request_uri;
}

# HTTPS server block
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name yourdomain.com www.yourdomain.com;

    # SSL Certificate Paths
    ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;

    # Recommended SSL parameters
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;
    ssl_session_tickets off;

    # OCSP Stapling
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /etc/letsencrypt/live/yourdomain.com/chain.pem;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;

    # Security Headers
    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header Referrer-Policy "no-referrer-when-downgrade";

    # Document root and index
    root /var/www/yourdomain.com/html;
    index index.html index.htm index.nginx-debian.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

Wichtige Konfigurationsdirektiven erklärt

  • ssl_protocols TLSv1.2 TLSv1.3: Deaktiviert ältere, anfällige Protokolle (SSLv3, TLS 1.0, TLS 1.1)
  • ssl_ciphers: Gibt eine starke Cipher-Suite an, die Forward Secrecy priorisiert
  • ssl_stapling on: Aktiviert OCSP-Stapling und reduziert die SSL-Handshake-Latenz
  • Strict-Transport-Security: Weist Browser an, für Ihre Domain immer HTTPS zu verwenden (HSTS)
  • http2: Aktiviert HTTP/2 für verbesserte Performance bei HTTPS-Verbindungen

Schritt 5: Ihre Nginx-Konfiguration testen

Bevor Sie Nginx neu starten, validieren Sie immer Ihre Konfigurationssyntax, um Fehler zu erkennen, die Ihre Website offline nehmen könnten:

sudo nginx -t

Ein erfolgreicher Test gibt zurück:

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

Wenn Sie auf Fehler stoßen, überprüfen Sie die Ausgabe sorgfältig – Nginx gibt die Datei und die Zeilennummer an, wo das Problem besteht.

Schritt 6: Nginx neu starten, um Änderungen anzuwenden

Sobald der Konfigurationstest bestanden ist, laden Sie Nginx neu oder starten Sie es neu:

# Graceful reload (preferred for production — no downtime)
sudo systemctl reload nginx

# Full restart (use if reload doesn't apply all changes)
sudo systemctl restart nginx

Überprüfen Sie, ob Nginx nach dem Neustart korrekt läuft:

sudo systemctl status nginx

Schritt 7: Automatische SSL-Zertifikatserneuerung einrichten

Let’s Encrypt-Zertifikate laufen nach 90 Tagen ab. Diese kurze Gültigkeitsdauer ist beabsichtigt – sie begrenzt den Schaden durch kompromittierte Zertifikate und fördert die Automatisierung. Certbot installiert automatisch einen systemd-Timer (oder Cron-Job), um Erneuerungen zu verwalten, aber Sie sollten ihn überprüfen und testen.

Den vorhandenen Erneuerungstimer überprüfen

sudo systemctl status certbot.timer

Sie sollten sehen, dass der Timer aktiv ist und zweimal täglich ausgeführt werden soll.

Den Erneuerungsprozess testen

Simulieren Sie eine Erneuerung, ohne tatsächlich Zertifikate zu ändern:

sudo certbot renew --dry-run

Eine erfolgreiche Ausgabe enthält:

Congratulations, all simulated renewals succeeded:
  /etc/letsencrypt/live/yourdomain.com/fullchain.pem (success)

Einen Post-Renewal-Hook zum Neuladen von Nginx hinzufügen

Certbot lädt Nginx nach der Erneuerung von Zertifikaten nicht automatisch neu, es sei denn, Sie konfigurieren einen Deploy-Hook. Erstellen Sie einen mit:

sudo nano /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh

Fügen Sie folgenden Inhalt hinzu:

#!/bin/bash
systemctl reload nginx

Machen Sie ihn ausführbar:

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

Dies stellt sicher, dass Nginx die neuen Zertifikatsdateien unmittelbar nach jeder erfolgreichen Erneuerung lädt.

Schritt 8: Ihre SSL-Installation überprüfen

Nach Abschluss der Einrichtung überprüfen Sie Ihre SSL-Konfiguration mit diesen Methoden:

Browser-Überprüfung

Navigieren Sie zu https://yourdomain.com in Ihrem Browser. Sie sollten ein Schloss-Symbol in der Adressleiste sehen, das eine sichere Verbindung anzeigt.

Online-SSL-Testtools

Verwenden Sie diese kostenlosen Tools, um die Qualität Ihrer SSL-Konfiguration zu prüfen:

  • SSL Labs (Qualys): https://www.ssllabs.com/ssltest/ — Gibt eine Buchstabennote (streben Sie A oder A+ an)
  • Security Headers: https://securityheaders.com/ — Prüft Ihre HTTP-Sicherheitsheader
  • HSTS Preload: https://hstspreload.org/ — Überprüft die HSTS-Preload-Berechtigung

Kommandozeilen-Verifizierung

# Check certificate details
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com

# Check certificate expiry date
echo | openssl s_client -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -dates

Behebung häufiger SSL-Probleme in Nginx

ProblemWahrscheinliche UrsacheLösung
ERR_SSL_PROTOCOL_ERRORNginx lauscht nicht auf Port 443Überprüfen Sie die listen 443 ssl;-Direktive und Firewall-Regeln
NET::ERR_CERT_AUTHORITY_INVALIDVerwendung von cert.pem statt fullchain.pemAktualisieren Sie ssl_certificate zur Verwendung von fullchain.pem
Zertifikat wird nicht erneuertCertbot-Timer deaktiviert oder Port 80 blockiertFühren Sie sudo certbot renew --dry-run aus und überprüfen Sie die Logs
Warnungen zu gemischten InhaltenHTTP-Ressourcen werden auf HTTPS-Seite geladenAktualisieren Sie alle internen Links und Asset-URLs auf HTTPS
SSL_ERROR_RX_RECORD_TOO_LONGHTTP-Datenverkehr trifft auf HTTPS-PortStellen Sie sicher, dass die Weiterleitung von Port 80 auf 443 konfiguriert ist

Die richtige Hosting-Umgebung für SSL wählen

Die Performance und Zuverlässigkeit Ihrer SSL-Implementierung hängt stark von Ihrer Hosting-Umgebung ab. Hier ist ein kurzer Überblick:

  • VPS Hosting: Vollständiger Root-Zugriff gibt Ihnen die vollständige Kontrolle über Nginx-Konfiguration, SSL-Parameter und Zertifikatsverwaltung – ideal für diesen Leitfaden
  • Dedizierte Server: Maximale Performance und Isolation für stark frequentierte Websites, die SSL-Konfigurationen auf Unternehmensebene erfordern
  • Shared Web Hosting: SSL wird typischerweise über ein Kontrollpanel verwaltet; manuelle Certbot-Konfiguration ist möglicherweise nicht verfügbar
  • VPS mit cPanel: Vereinfacht die SSL-Verwaltung über eine grafische Oberfläche und behält dabei die Kontrolle auf VPS-Ebene

Für Entwickler und Systemadministratoren, die die vollständige Kontrolle über ihren SSL-Stack benötigen, ist ein VPS oder dedizierter Server die empfohlene Wahl.

Fazit

Die Einrichtung von SSL in Nginx ist ein mehrstufiger Prozess, aber jeder Schritt erfüllt einen wichtigen Zweck – von der Verschlüsselung des Datenverkehrs und der Verifizierung des Domain-Eigentums bis hin zur Härtung Ihrer Cipher-Konfiguration und der Automatisierung von Erneuerungen. Durch das Befolgen dieses Leitfadens haben Sie implementiert:

✅ Ein kostenloses, vertrauenswürdiges SSL-Zertifikat über Let’s Encrypt und Certbot

✅ Eine gehärtete Nginx-SSL-Konfiguration mit modernen TLS-Protokollen

✅ HTTP-zu-HTTPS-Weiterleitung für den gesamten Datenverkehr

✅ OCSP-Stapling für verbesserte Handshake-Performance

✅ HSTS und Sicherheitsheader für Defense-in-Depth

✅ Automatisierte Zertifikatserneuerung mit Nginx-Reload-Hooks

Ein korrekt konfiguriertes SSL-Zertifikat schützt nicht nur Ihre Nutzer – es schafft Vertrauen, verbessert Ihre SEO-Rankings und ist eine grundlegende Anforderung für jede professionelle Web-Präsenz. Wenn Sie nach zuverlässiger Infrastruktur suchen, um Ihren SSL-gesicherten Nginx-Server zu hosten, erkunden Sie AlexHosts VPS Hosting-Pläne, die speziell für Entwickler und Unternehmen entwickelt wurden, die Sicherheit ernst nehmen.

15%

15% auf alle Hosting-Dienste sparen

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

Benutze den Code:

Skills
Anfangen