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 nginxUnd bestätigen, dass Ihre Domain korrekt aufgelöst wird, mit:
dig yourdomain.com +shortSchritt 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 -yCertbot 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 -yDie Installation überprüfen
Bestätigen Sie, dass Certbot erfolgreich installiert wurde, indem Sie seine Version überprüfen:
certbot --versionSie 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 statusDas 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.comWas passiert während dieses Prozesses?
- 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
- Zertifikatsausstellung: Let’s Encrypt stellt ein signiertes Zertifikat aus, das 90 Tage gültig ist
- 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:
| Datei | Zweck |
|---|---|
fullchain.pem | Ihr Zertifikat + Zwischenzertifikatskette |
privkey.pem | Ihr privater Schlüssel (halten Sie diesen geheim) |
cert.pem | Nur Ihr Domain-Zertifikat |
chain.pem | Nur 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.comWenn Sie die Standard-Konfigurationsdatei verwenden:
sudo nano /etc/nginx/sites-available/defaultVollstä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 priorisiertssl_stapling on: Aktiviert OCSP-Stapling und reduziert die SSL-Handshake-LatenzStrict-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 -tEin 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 successfulWenn 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 nginxSchritt 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.timerSie 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-runEine 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.shFügen Sie folgenden Inhalt hinzu:
#!/bin/bash
systemctl reload nginxMachen Sie ihn ausführbar:
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.shDies 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 -datesBehebung häufiger SSL-Probleme in Nginx
| Problem | Wahrscheinliche Ursache | Lösung |
|---|---|---|
ERR_SSL_PROTOCOL_ERROR | Nginx lauscht nicht auf Port 443 | Überprüfen Sie die listen 443 ssl;-Direktive und Firewall-Regeln |
NET::ERR_CERT_AUTHORITY_INVALID | Verwendung von cert.pem statt fullchain.pem | Aktualisieren Sie ssl_certificate zur Verwendung von fullchain.pem |
| Zertifikat wird nicht erneuert | Certbot-Timer deaktiviert oder Port 80 blockiert | Führen Sie sudo certbot renew --dry-run aus und überprüfen Sie die Logs |
| Warnungen zu gemischten Inhalten | HTTP-Ressourcen werden auf HTTPS-Seite geladen | Aktualisieren Sie alle internen Links und Asset-URLs auf HTTPS |
SSL_ERROR_RX_RECORD_TOO_LONG | HTTP-Datenverkehr trifft auf HTTPS-Port | Stellen 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.
