SSL-Installation in Nginx und 301-Weiterleitung von HTTP auf HTTPS

Nginx ist dank seiner Leistung und seines geringen Speicherverbrauchs einer der weltweit beliebtesten Webserver. In dieser Anleitung zeigen wir Ihnen anhand eines vollständigen server-Block-Beispiels, wie Sie ein kostenloses SSL-Zertifikat in Nginx definieren und den gesamten HTTP-Verkehr auf sicheres HTTPS umleiten.

Erforderliche Dateien

Nginx erwartet das Zertifikat und die Zwischenzertifikatskette in einer einzigen kombinierten Datei. Dafür ist fullchain.pem ideal; sie enthält Ihr Zertifikat und die CA-Kette zusammen. Außerdem wird der private Schlüssel private.key benötigt.

  • fullchain.pem → Zertifikat + Zwischenzertifikatskette (ssl_certificate)
  • private.key → privater Schlüssel (ssl_certificate_key)

Falls Sie diese beiden Dateien nicht besitzen, verifizieren Sie Ihre Domain mit unserem kostenlosen SSL-Assistenten und entnehmen Sie dem heruntergeladenen ZIP-Paket die Dateien fullchain.pem und private.key.

Schritt 1 — Laden Sie die Dateien auf den Server

Kopieren Sie die Dateien in ein sicheres Verzeichnis und verschärfen Sie die Berechtigungen. Es ist entscheidend, dass der private Schlüssel nur von root gelesen werden kann:

sudo mkdir -p /etc/nginx/ssl/ihredomain.com
sudo cp fullchain.pem /etc/nginx/ssl/ihredomain.com/
sudo cp private.key   /etc/nginx/ssl/ihredomain.com/
sudo chmod 600 /etc/nginx/ssl/ihredomain.com/private.key

Schritt 2 — Konfigurieren Sie den Server-Block

Öffnen Sie Ihre Site-Konfigurationsdatei (z. B. /etc/nginx/sites-available/ihredomain.com). Das folgende Beispiel enthält zwei server-Blöcke: einen, der HTTP auf HTTPS umleitet, und einen, der TLS mit sicheren Einstellungen bereitstellt:

# 1) Alle HTTP-Anfragen dauerhaft auf HTTPS umleiten
server {
    listen 80;
    listen [::]:80;
    server_name ihredomain.com www.ihredomain.com;
    return 301 https://$host$request_uri;
}

# 2) HTTPS-Server
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    http2 on;
    server_name ihredomain.com www.ihredomain.com;

    ssl_certificate     /etc/nginx/ssl/ihredomain.com/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/ihredomain.com/private.key;

    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers off;
    ssl_session_timeout 1d;
    ssl_session_cache   shared:SSL:10m;

    root /var/www/ihredomain.com;
    index index.html index.php;

    location / {
        try_files $uri $uri/ =404;
    }
}
Bild: <Ein in einem Editor geöffneter Nginx-Server-Block>
Zwei Server-Blöcke: einer für die 301-Weiterleitung, der andere für TLS über 443.

Schritt 3 — Testen Sie die Konfiguration und laden Sie sie neu

Um Syntaxfehler abzufangen, testen Sie unbedingt vor dem Neustart von Nginx:

sudo nginx -t

Wenn die Ausgabe syntax is ok und test is successful lautet, laden Sie den Dienst sanft (ohne Ausfall) neu:

sudo systemctl reload nginx

Schritt 4 — Überprüfung

Sie können über die Kommandozeile prüfen, ob die Weiterleitung und das Zertifikat funktionieren:

# Um den Header der 301-Weiterleitung zu sehen
curl -I http://ihredomain.com

# Um zu überprüfen, dass die Zertifikatskette vollständig bereitgestellt wird
echo | openssl s_client -connect ihredomain.com:443 -servername ihredomain.com

Beim ersten Befehl sollten Sie HTTP/1.1 301 Moved Permanently und Location: https://... sehen. Stellen Sie beim zweiten Befehl sicher, dass die Kette lückenlos vom Zertifikat bis zur Zwischenzertifikatskette aufgelistet wird.

Häufige Fehler

  • SSL_ERROR_BAD_CERT_DOMAIN: Der server_name stimmt nicht mit der Domain im Zertifikat überein. Wenn www enthalten ist, geben Sie beide Namen an.
  • Fehlende Zwischenzertifikatskette: Verwenden Sie für ssl_certificate nicht allein certificate.crt; verwenden Sie fullchain.pem.
  • Berechtigungsfehler: Wenn Nginx den privaten Schlüssel nicht lesen kann, überprüfen Sie die Einstellungen chmod 600 und den Besitzer.

Zusammenfassung

SSL in Nginx besteht lediglich darin, ssl_certificate und ssl_certificate_key zu definieren und einen separaten Block den gesamten HTTP-Verkehr per 301 auf HTTPS umleiten zu lassen. Falls Sie kein Zertifikat haben, holen Sie sich Ihr 90-Tage-Zertifikat mit unserem kostenlosen SSL-Assistenten, entnehmen Sie dem ZIP die Dateien fullchain.pem und private.key und passen Sie den obigen Block an.