Zum Hauptinhalt springen
Zurück zur Kategorie

SSL/TLS-Zertifikat einrichten: Let's Encrypt Anleitung

Kostenloses SSL/TLS-Zertifikat mit Let's Encrypt und Certbot auf Nginx und Apache installieren. Automatische Erneuerung, HTTPS-Konfiguration und Fehlerbehebung.

Lesezeit: 12 min Serververwaltung
ssltlslets encryptcertbothttpszertifikatnginxapache

Inhaltsverzeichnis

SSL/TLS-Zertifikat einrichten: Let's Encrypt Anleitung

SSL/TLS-Zertifikate verschlüsseln die Kommunikation zwischen Ihrem Webserver und den Besuchern. HTTPS ist heute für SEO-Rankings, Browser-Vertrauensindikatoren und Benutzersicherheit unerlässlich. Let's Encrypt bietet kostenlose, automatisierte und quelloffene Zertifikate.

Was ist SSL/TLS?

SSL (Secure Sockets Layer) und sein moderner Nachfolger TLS (Transport Layer Security) sind kryptografische Protokolle, die Daten im Netzwerk sichern. Bei HTTPS:

  • Daten werden verschlüsselt übertragen (Vertraulichkeit)
  • Die Serveridentität wird verifiziert (Authentifizierung)
  • Daten können nicht manipuliert werden (Integrität)

Moderne Browser markieren HTTP-Seiten als 'Nicht sicher'. Google verwendet HTTPS als Rankingfaktor. Auf REXE-Servern ist die SSL-Installation kostenlos und einfach.

Certbot installieren

Certbot ist das offizielle Tool zum automatischen Abrufen und Erneuern von Let's Encrypt-Zertifikaten.

Debian/Ubuntu

hljs bash
# System aktualisieren
sudo apt update && sudo apt upgrade -y

# Certbot mit Nginx-Plugin installieren
sudo apt install certbot python3-certbot-nginx -y

# Für Apache
sudo apt install certbot python3-certbot-apache -y

RHEL/CentOS/AlmaLinux

hljs bash
# EPEL-Repository hinzufügen
sudo dnf install epel-release -y

# Certbot installieren
sudo dnf install certbot python3-certbot-nginx -y

Installation via Snap (Empfohlen)

hljs bash
# Snapd installieren
sudo apt install snapd -y

# Certbot via Snap installieren
sudo snap install --classic certbot

# Symlink erstellen
sudo ln -s /snap/bin/certbot /usr/bin/certbot

# Version prüfen
certbot --version

SSL-Zertifikat für Nginx

Voraussetzungen

Vor der Zertifikatsausstellung:

  1. Ihre Domain muss auf die IP-Adresse Ihres Servers zeigen
  2. Ports 80 und 443 müssen geöffnet sein
  3. Nginx muss laufen
hljs bash
# Domain-Auflösung prüfen
nslookup example.com

# Firewall-Status prüfen
sudo ufw status
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Automatische Nginx-Konfiguration

hljs bash
# Zertifikat abrufen und Nginx automatisch konfigurieren
sudo certbot --nginx -d example.com -d www.example.com

# Nur Zertifikat abrufen (manuelle Konfiguration)
sudo certbot certonly --nginx -d example.com -d www.example.com

# Wildcard-Zertifikat (DNS-Challenge erforderlich)
sudo certbot certonly --manual --preferred-challenges dns -d "*.example.com" -d example.com

Manuelle Nginx SSL-Konfiguration

hljs nginx
# HTTP zu HTTPS umleiten
server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$server_name$request_uri;
}

# HTTPS-Serverblock
server {
    listen 443 ssl http2;
    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 ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
    ssl_prefer_server_ciphers off;
    ssl_session_cache shared:SSL:10m;

    add_header Strict-Transport-Security "max-age=15768000" always;

    root /var/www/example.com/html;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}
hljs bash
# Konfiguration testen
sudo nginx -t

# Nginx neu laden
sudo systemctl reload nginx

SSL-Zertifikat für Apache

hljs bash
# SSL-Modul aktivieren
sudo a2enmod ssl
sudo a2enmod rewrite

# Zertifikat mit Apache-Plugin abrufen
sudo certbot --apache -d example.com -d www.example.com

Manuelle Apache SSL-Konfiguration

hljs apache
<VirtualHost *:443>
    ServerName example.com
    DocumentRoot /var/www/example.com

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

    SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
    Header always set Strict-Transport-Security "max-age=15768000"
</VirtualHost>

<VirtualHost *:80>
    ServerName example.com
    Redirect permanent / https://example.com/
</VirtualHost>

Automatische Erneuerung

Let's Encrypt-Zertifikate sind 90 Tage gültig. Certbot richtet einen systemd-Timer oder Cron-Job ein.

hljs bash
# Automatische Erneuerung testen
sudo certbot renew --dry-run

# Timer-Status prüfen
sudo systemctl status certbot.timer

# Manuelle Erneuerung
sudo certbot renew

# Nginx nach Erneuerung neu laden
sudo certbot renew --post-hook "systemctl reload nginx"

Cron-basierte Erneuerung

hljs bash
# Crontab bearbeiten
sudo crontab -e

# Zweimal täglich prüfen
0 0,12 * * * certbot renew --quiet --post-hook "systemctl reload nginx"

Zertifikatsstatus prüfen

hljs bash
# Alle Zertifikate auflisten
sudo certbot certificates

# Ablaufdatum prüfen
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -dates

Fehlerbehebung

Port 80 gesperrt

hljs bash
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo systemctl status nginx

Domain-Auflösungsfehler

hljs bash
nslookup example.com 8.8.8.8
dig example.com +short
curl -4 ifconfig.me

Let's Encrypt hat Rate-Limits: 5 fehlgeschlagene Versuche pro Stunde. Verwenden Sie --staging zum Testen.

hljs bash
# Staging-Umgebung (keine Rate-Limits)
sudo certbot --nginx --staging -d example.com

Fazit

Mit Let's Encrypt und Certbot dauert die SSL/TLS-Zertifikatsinstallation nur wenige Minuten. Die automatische Erneuerung beseitigt Bedenken wegen ablaufender Zertifikate. HTTPS auf REXE-Servern ist sowohl für die Sicherheit als auch für die SEO-Performance entscheidend.