Zum Hauptinhalt springen

SSL auf einem NGINX-Server aktivieren

Veröffentlicht am

  • Linux
  • Nginx
  • Security
  • SSL

Inhaltsverzeichnis

  1. Zusammenfassung
  2. Einleitung
  3. Systemanforderungen
  4. Installation von Certbot und Nginx-Plugin
  5. SSL-Zertifikate beziehen
  6. Nginx für SSL konfigurieren
  7. Zertifikate erneuern
  8. Sicherheitsoptimierungen
  9. Fazit
  10. Referenzen

 

1. Zusammenfassung

Dieser Artikel bietet eine praktische Anleitung zur Aktivierung der SSL/TLS-Verschlüsselung auf Nginx mithilfe von Certbot, einem Let's-Encrypt-Client. Er umfasst die Systemvorbereitung, den Zertifikatsabruf, die Nginx-Konfiguration und empfohlene Sicherheitshärtungen. Dieses Verfahren gewährleistet HTTPS-Verfügbarkeit mit automatischer Erneuerung und verbessert die Sicherheit sowie Compliance Ihrer Website.

2. Einleitung

Secure Socket Layer (SSL) und dessen Nachfolger Transport Layer Security (TLS) sind kryptografische Protokolle zur Sicherung der Kommunikation über das Internet. Die Aktivierung von HTTPS (Hypertext Transfer Protocol Secure) ist unerlässlich für Datenschutz und das Vertrauen der Nutzer.

Let's Encrypt ist eine kostenlose, automatisierte und offene Zertifizierungsstelle (CA), die HTTPS für Websites ermöglicht. Certbot ist der offizielle Client zum Anfordern und Erneuern dieser Zertifikate. In Verbindung mit Nginx kann Certbot SSL-Einstellungen automatisch konfigurieren.

3. Systemanforderungen

Um Certbot mit Nginx zu nutzen, müssen folgende Voraussetzungen erfüllt sein:

  • Ein Linux-basiertes Betriebssystem (Ubuntu, Debian, CentOS usw.)
  • Ein registrierter Domainname (z. B. example.com)
  • Ein DNS-A-Record, der auf die Server-IP-Adresse verweist
  • Root- oder Sudo-Zugriff auf den Server
  • Ein installierter und laufender Nginx-Dienst

4. Installation von Certbot und Nginx-Plugin

1. Auf Ubuntu/Debian:

Ubuntu / Debian
sudo apt update
sudo apt install certbot python3-certbot-nginx

2. Auf CentOS/RHEL:

CentOS / RHEL
sudo yum install epel-release
sudo yum install certbot python3-certbot-nginx

5. SSL-Zertifikate beziehen

Option A: Automatische Konfiguration

Certbot kann Nginx-Serverblöcke automatisch erkennen und konfigurieren:

Certbot mit Nginx-Plugin ausführen
sudo certbot --nginx

Sie werden nach Folgendem gefragt:

  • Eingabe Ihres Domainnamens (bzw. mehrerer Domains)
  • Entscheidung, ob HTTP automatisch auf HTTPS umgeleitet werden soll
  • Zustimmung zu den Nutzungsbedingungen von Let's Encrypt

Certbot stellt daraufhin das Zertifikat aus, passt die Nginx-Konfiguration an und lädt Nginx automatisch neu.

Option B: Nur Zertifikat abrufen (manuelle Konfiguration)

Diese Methode bietet mehr Kontrolle über die Nginx-Konfiguration:

Manuelle Zertifikatserstellung
sudo certbot certonly --nginx -d example.com -d www.example.com

6. Nginx für SSL konfigurieren

Falls Certbot die Konfiguration nicht automatisch übernommen hat, passen Sie Ihren Server-Block manuell an:

/etc/nginx/sites-available/example.com
server {
    listen 443 ssl;
    server_name example.com www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    root /var/www/html;
    index index.html index.htm;

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

# Redirect HTTP to HTTPS
server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

Konfiguration testen und Nginx neu laden:

Nginx neu laden
sudo nginx -t
sudo systemctl reload nginx

7. Zertifikate erneuern

Zertifikate von Let's Encrypt sind 90 Tage gültig. Certbot enthält ein integriertes Erneuerungssystem.

Automatische Erneuerung testen:

Testlauf der Erneuerung (Dry-Run)
sudo certbot renew --dry-run

Cron-Job oder Systemd-Timer einrichten (meist bereits automatisch):

Cron-Eintrag für Zertifikatserneuerung
sudo crontab -e
# Add the following entry:
0 2 * * * /usr/bin/certbot renew --quiet

8. Sicherheitsoptimierungen

Für eine noch stärkere SSL-Sicherheit können folgende Direktiven ergänzt werden:

HSTS aktivieren (HTTP Strict Transport Security):

HSTS-Header
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

OCSP-Stapling aktivieren:

OCSP-Stapling
ssl_stapling on;
ssl_stapling_verify on;

Diffie-Hellman-Parameter generieren und verwenden:

DH-Parameter generieren
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096

Anschließend die Datei in Nginx einbinden:

Nginx ssl_dhparam Direktive
ssl_dhparam /etc/ssl/certs/dhparam.pem;

9. Fazit

Die Aktivierung von SSL/TLS auf Nginx mit Certbot ist eine unkomplizierte und sichere Methode, um verschlüsselte Kommunikation im Web zu gewährleisten. Die enge Verzahnung zwischen Certbot und Nginx vereinfacht Ausstellung und Erneuerung erheblich. Durch die Einhaltung bewährter Verfahren wie automatische Verlängerung, starke Cipher-Suiten und moderne Sicherheits-Header sichern Administratoren ihre Infrastruktur zuverlässig gegen gängige webbasierte Angriffe ab.

10. Referenzen

Kommentare 0

Noch keine Kommentare.

Kommentar schreiben