Wie kann ich HTTPS mit einem SSL-Zertifikat in NGINX aktivieren und konfigurieren?
- Einführung
- Beschaffung eines SSL-Zertifikats
- Vorbereitung der Zertifikatdateien
- NGINX-Konfiguration für HTTPS
- HTTP zu HTTPS Weiterleitung konfigurieren
- Überprüfung der Konfiguration
- Zusätzliche Sicherheitseinstellungen
- Zusammenfassung
Einführung
Das Aktivieren von HTTPS in NGINX mithilfe eines SSL-Zertifikats ist ein wichtiger Schritt, um die Sicherheit Ihrer Webseite zu erhöhen. HTTPS verschlüsselt die Datenübertragung zwischen dem Server und dem Client, wodurch sensible Informationen geschützt werden. Im Folgenden wird der Prozess ausführlich erklärt, von der Beschaffung des Zertifikats bis zur Konfiguration des NGINX-Servers.
Beschaffung eines SSL-Zertifikats
Zunächst benötigen Sie ein gültiges SSL-Zertifikat. Dieses kann entweder von einer Zertifizierungsstelle (Certificate Authority, CA) erworben werden oder kostenlos über Dienste wie Lets Encrypt bezogen werden. Für Entwicklungs- oder Testzwecke können Sie auch selbstsignierte Zertifikate erstellen, die allerdings von Browsern als unsicher eingestuft werden.
Falls Sie Lets Encrypt verwenden möchten, können Sie beispielsweise das Tool Certbot einsetzen, um Ihr Zertifikat automatisch zu erhalten und zu erneuern. Für eine manuelle Installation benötigen Sie meist zwei Dateien: das Zertifikat selbst (z.B. fullchain.pem) und den privaten Schlüssel (privkey.pem).
Vorbereitung der Zertifikatdateien
Nachdem Sie die Zertifikatsdateien erhalten haben, sollten Sie diese an einem sicheren Ort auf Ihrem Server ablegen. Ein gängiger Pfad ist etwa /etc/ssl/certs/ für das Zertifikat und /etc/ssl/private/ für den privaten Schlüssel. Achten Sie darauf, dass die Zugriffsrechte entsprechend gesetzt sind, sodass Unbefugte keinen Zugriff erhalten.
NGINX-Konfiguration für HTTPS
Um HTTPS zu aktivieren, müssen Sie die NGINX-Konfigurationsdatei für Ihre Webseite anpassen. Typischerweise befindet sich die Konfiguration unter /etc/nginx/sites-available/ oder direkt in der Hauptkonfigurationsdatei unter /etc/nginx/nginx.conf. Es ist ratsam, eine separate Server-Block-Datei pro Webseite zu nutzen.
In der Server-Block-Konfiguration fügen Sie einen Abschnitt hinzu, der auf Port 443 (Standard für HTTPS) lauscht. Innerhalb dieses Blocks geben Sie den Pfad zum SSL-Zertifikat und dem privaten Schlüssel an. Außerdem aktivieren Sie SSL mit dem Directive ssl on; oder besser, da diese inzwischen veraltet ist, die Angabe von listen 443 ssl;.
Beispielkonfiguration:
server { listen 443 ssl; server_name www.ihre-domain.de; ssl_certificate /etc/ssl/certs/fullchain.pem; ssl_certificate_key /etc/ssl/private/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; root /var/www/ihre-webseite; index index.html index.htm index.php; location / { try_files $uri $uri/ =404; } # Optional: Weiterleitungen von HTTP zu HTTPS}HTTP zu HTTPS Weiterleitung konfigurieren
Damit alle Anfragen, die über HTTP hereinkommen, automatisch auf HTTPS umgeleitet werden, können Sie einen separaten Server-Block auf Port 80 definieren, der alle Anfragen weiterleitet. Das erhöht die Sicherheit, da keine unverschlüsselten Verbindungen erlaubt sind.
Beispiel für die Umleitung:
server { listen 80; server_name www.ihre-domain.de; return 301 https://$server_name$request_uri;}Überprüfung der Konfiguration
Nach dem Anpassen der Konfiguration testen Sie diese mit dem Befehl nginx -t, um sicherzustellen, dass keine Fehler vorliegen. Danach laden Sie NGINX neu mit systemctl reload nginx oder einem vergleichbaren Befehl abhängig von Ihrem System.
Rufen Sie anschließend Ihre Webseite mit https:// (z.B. https://www.ihre-domain.de) auf. Sie sollten nun die sichere Verbindung sehen sowie ein gültiges Zertifikat im Browser angezeigt bekommen.
Zusätzliche Sicherheitseinstellungen
Um die Sicherheit weiter zu erhöhen, können Sie zusätzliche SSL-Parameter setzen, wie z.B. das Aktivieren von HTTP Strict Transport Security (HSTS), das Verhindern von Protokoll- und Cipher-Suite-Schwächen oder die Nutzung von OCSP-Stapling. Ein Beispiel für HSTS:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;Diese Maßnahmen helfen dabei, Ihre Webseite gegen bestimmte Angriffe abzusichern und den Datenschutz der Benutzer zu erhöhen.
Zusammenfassung
Das Aktivieren von HTTPS in NGINX erfordert ein gültiges SSL-Zertifikat, das auf dem Server hinterlegt wird. Die NGINX-Konfiguration wird angepasst, um SSL zu nutzen und eventuell eine automatische Weiterleitung von HTTP auf HTTPS einzurichten. Nach erfolgreicher Konfiguration und einem Neustart von NGINX stellt die Webseite eine sichere Verbindung per HTTPS bereit. Durch weitere Sicherheitsoptionen kann die Absicherung der Verbindung noch verbessert werden.
