For the complete documentation index, see llms.txt. This page is also available as Markdown.

SSL-Zertifikat einrichten

Ein SSL-Zertifikat sorgt dafür, dass eine Webseite verschlüsselt über HTTPS erreichbar ist.

Ohne SSL-Zertifikat wird eine Webseite nur über HTTP ausgeliefert. Moderne Browser markieren solche Webseiten häufig als „Nicht sicher“. Mit HTTPS werden Daten zwischen Besucher und Server verschlüsselt übertragen.

In diesem Artikel erklären wir dir, wie du ein SSL-Zertifikat auf einem KVM-Server einrichtest.

Voraussetzungen

Du benötigst:

  • einen KVM-Server mit Linux

  • eine Domain oder Subdomain

  • Zugriff per SSH

  • einen installierten Webserver, zum Beispiel Apache oder Nginx

  • korrekt gesetzte DNS-Einträge

  • geöffnete Ports 80 und 443

Beispiele für Domains:

  • deinedomain.de

  • www.deinedomain.de

  • panel.deinedomain.de

  • api.deinedomain.de

Was ist SSL?

SSL wird häufig als allgemeiner Begriff für verschlüsselte Webseiten verwendet.

Technisch wird heute meist TLS verwendet. Im Alltag spricht man aber weiterhin oft von SSL-Zertifikaten.

Ein SSL-Zertifikat bestätigt, dass eine Domain zu einem bestimmten Server gehört und ermöglicht eine verschlüsselte Verbindung.

Was ist HTTPS?

HTTPS ist die verschlüsselte Variante von HTTP.

Protokoll
Bedeutung

HTTP

unverschlüsselte Webseite

HTTPS

verschlüsselte Webseite

Beispiel ohne SSL:

http://deinedomain.de

Beispiel mit SSL:

https://deinedomain.de

DNS prüfen

Bevor du ein SSL-Zertifikat einrichtest, muss deine Domain auf deinen KVM-Server zeigen.

Dafür wird meistens ein A-Record verwendet.

Beispiel:

Typ
Name
Ziel

A

@

IPv4-Adresse deines Servers

A

www

IPv4-Adresse deines Servers

Wenn du IPv6 verwendest, kann zusätzlich ein AAAA-Record gesetzt werden.

Typ
Name
Ziel

AAAA

@

IPv6-Adresse deines Servers

AAAA

www

IPv6-Adresse deines Servers

DNS-Änderungen sind nicht immer sofort aktiv. Es kann einige Minuten bis mehrere Stunden dauern, bis eine Änderung überall übernommen wurde.

Ports prüfen

Für die Einrichtung und Nutzung von HTTPS müssen die richtigen Ports erreichbar sein.

Port
Zweck

80

HTTP

443

HTTPS

Port 80 wird häufig für die Zertifikatsprüfung benötigt. Port 443 wird für die verschlüsselte Webseite verwendet.

Wenn du eine Firewall nutzt, müssen beide Ports erlaubt sein.

Bei UFW unter Linux:

ufw allow 80/tcp

ufw allow 443/tcp

Status prüfen:

ufw status

Webserver installieren

Für eine Webseite brauchst du einen Webserver.

Häufig verwendet werden:

  • Apache

  • Nginx

Du solltest nur einen Webserver für dieselbe Webseite verwenden. Wenn Apache und Nginx gleichzeitig denselben Port nutzen möchten, kann es zu Konflikten kommen.

Apache installieren

Auf Debian oder Ubuntu kannst du Apache so installieren:

apt update

apt install apache2

Status prüfen:

systemctl status apache2

Apache starten:

systemctl start apache2

Apache beim Systemstart aktivieren:

systemctl enable apache2

Nginx installieren

Auf Debian oder Ubuntu kannst du Nginx so installieren:

apt update

apt install nginx

Status prüfen:

systemctl status nginx

Nginx starten:

systemctl start nginx

Nginx beim Systemstart aktivieren:

systemctl enable nginx

Certbot installieren

Für kostenlose SSL-Zertifikate wird häufig Let's Encrypt verwendet.

Certbot ist ein Tool, mit dem du Let's-Encrypt-Zertifikate automatisch erstellen und verlängern kannst.

Certbot installieren:

apt update

apt install certbot

Für Apache zusätzlich:

apt install python3-certbot-apache

Für Nginx zusätzlich:

apt install python3-certbot-nginx

SSL-Zertifikat für Apache einrichten

Wenn du Apache verwendest, kannst du Certbot direkt mit dem Apache-Plugin ausführen.

Beispiel für eine Domain:

certbot --apache -d deinedomain.de

Beispiel für Domain und www-Subdomain:

certbot --apache -d deinedomain.de -d www.deinedomain.de

Während der Einrichtung fragt Certbot einige Angaben ab. Dazu gehören meistens:

  • E-Mail-Adresse

  • Zustimmung zu den Nutzungsbedingungen

  • Auswahl der Weiterleitung von HTTP auf HTTPS

Wenn du gefragt wirst, ob HTTP automatisch auf HTTPS weitergeleitet werden soll, ist die Weiterleitung in den meisten Fällen sinnvoll.

SSL-Zertifikat für Nginx einrichten

Wenn du Nginx verwendest, kannst du Certbot direkt mit dem Nginx-Plugin ausführen.

Beispiel für eine Domain:

certbot --nginx -d deinedomain.de

Beispiel für Domain und www-Subdomain:

certbot --nginx -d deinedomain.de -d www.deinedomain.de

Auch hier fragt Certbot nach einigen Angaben und kann die Nginx-Konfiguration automatisch anpassen.

Zertifikat ohne Webserver-Plugin erstellen

Wenn du kein Apache- oder Nginx-Plugin nutzen möchtest, kannst du ein Zertifikat auch über den Webroot-Modus erstellen.

Beispiel:

certbot certonly --webroot -w /var/www/html -d deinedomain.de

Dabei muss der angegebene Webroot zur Domain passen.

Der Webroot ist das Verzeichnis, aus dem dein Webserver die Webseite ausliefert.

Typische Webroots sind:

Webserver
Häufiger Webroot

Apache

/var/www/html

Nginx

/var/www/html

eigene Konfiguration

abhängig von deiner Serverkonfiguration

HTTPS testen

Nach der Einrichtung solltest du deine Webseite im Browser öffnen.

Beispiel:

https://deinedomain.de

Prüfe:

  • wird die Webseite über HTTPS geladen?

  • zeigt der Browser ein Schloss-Symbol?

  • gibt es eine Sicherheitswarnung?

  • funktioniert auch https://www.deinedomain.de, falls eingerichtet?

  • leitet HTTP korrekt auf HTTPS weiter?

HTTP auf HTTPS weiterleiten

Eine Weiterleitung sorgt dafür, dass Besucher automatisch die verschlüsselte Version deiner Webseite verwenden.

Beispiel:

Ein Besucher öffnet:

http://deinedomain.de

Der Server leitet weiter auf:

https://deinedomain.de

Wenn du Certbot mit Apache oder Nginx verwendest, kann Certbot diese Weiterleitung häufig automatisch einrichten.

Zertifikat automatisch verlängern

Let's-Encrypt-Zertifikate sind nur für eine begrenzte Zeit gültig.

Certbot richtet normalerweise automatisch eine Verlängerung ein.

Du kannst die automatische Verlängerung testen:

certbot renew --dry-run

Wenn dieser Test erfolgreich ist, sollte die automatische Verlängerung funktionieren.

Status der Timer prüfen:

systemctl list-timers | grep certbot

Je nach System kann die Verlängerung über systemd oder cron ausgeführt werden.

Zertifikate anzeigen

Vorhandene Zertifikate kannst du so anzeigen:

certbot certificates

Dort siehst du unter anderem:

  • Domainnamen

  • Ablaufdatum

  • Speicherort des Zertifikats

  • Speicherort des privaten Schlüssels

Zertifikat erweitern

Wenn du später eine weitere Domain oder Subdomain hinzufügen möchtest, kannst du das Zertifikat erweitern.

Beispiel:

certbot --nginx -d deinedomain.de -d www.deinedomain.de -d panel.deinedomain.de

Bei Apache entsprechend:

certbot --apache -d deinedomain.de -d www.deinedomain.de -d panel.deinedomain.de

Achte darauf, dass alle Domains vorher per DNS auf deinen Server zeigen.

Zertifikat löschen

Wenn ein Zertifikat nicht mehr benötigt wird, kannst du es entfernen.

Zertifikate anzeigen:

certbot certificates

Zertifikat löschen:

certbot delete

Certbot fragt danach, welches Zertifikat gelöscht werden soll.

Lösche Zertifikate nur, wenn du sicher bist, dass sie nicht mehr verwendet werden.

Häufige Probleme

Domain zeigt nicht auf den Server

Wenn die Domain nicht auf deinen KVM-Server zeigt, kann Let's Encrypt die Domain nicht prüfen.

Prüfe:

  • A-Record korrekt gesetzt?

  • AAAA-Record korrekt gesetzt, falls IPv6 verwendet wird?

  • richtige IP-Adresse eingetragen?

  • DNS-Änderung bereits aktiv?

  • Domain richtig geschrieben?

Port 80 ist nicht erreichbar

Let's Encrypt muss deine Domain häufig über Port 80 prüfen.

Prüfe:

  • läuft der Webserver?

  • ist Port 80 in der Firewall geöffnet?

  • blockiert eine externe Firewall den Zugriff?

  • nutzt ein anderer Dienst Port 80?

  • ist die Domain von außen erreichbar?

Port 443 ist nicht erreichbar

Wenn Port 443 blockiert ist, funktioniert HTTPS nicht.

Prüfe:

  • ist Port 443 in der Firewall geöffnet?

  • wurde die Webserver-Konfiguration für HTTPS erstellt?

  • läuft Apache oder Nginx?

  • wurde der Webserver nach Änderungen neu geladen?

Apache neu laden:

systemctl reload apache2

Nginx neu laden:

systemctl reload nginx

Certbot meldet „unauthorized“

Diese Meldung bedeutet meistens, dass Let's Encrypt deine Domain nicht prüfen konnte.

Mögliche Ursachen:

  • Domain zeigt auf falsche IP-Adresse

  • Webserver liefert die Prüfdatei nicht aus

  • falscher Webroot angegeben

  • Port 80 blockiert

  • Weiterleitung falsch konfiguriert

Certbot meldet „connection refused“

Diese Meldung bedeutet meistens, dass der Server auf Port 80 oder 443 nicht erreichbar ist.

Prüfe Webserver, Firewall und DNS.

Certbot meldet „too many certificates“

Let's Encrypt hat Limits für die Ausstellung von Zertifikaten.

Diese Meldung kann auftreten, wenn zu oft Zertifikate für dieselbe Domain beantragt wurden.

Warte in diesem Fall ab und vermeide wiederholte Testversuche mit echten Zertifikaten.

Nutze für Tests nach Möglichkeit:

certbot renew --dry-run

Browser zeigt „Nicht sicher“

Wenn der Browser weiterhin „Nicht sicher“ anzeigt, kann das mehrere Gründe haben.

Prüfe:

  • wird wirklich https:// verwendet?

  • ist das Zertifikat gültig?

  • passt das Zertifikat zur Domain?

  • ist das Zertifikat abgelaufen?

  • werden unsichere Inhalte über HTTP geladen?

  • wurde der Webserver neu geladen?

Mixed Content

Mixed Content bedeutet, dass eine HTTPS-Seite noch Inhalte über HTTP lädt.

Beispiele:

  • Bilder über http://

  • Skripte über http://

  • CSS-Dateien über http://

Dadurch kann der Browser weiterhin eine Warnung anzeigen.

Lösung:

  • interne Links auf https:// ändern

  • CMS-Einstellungen prüfen

  • Webseiten-URL auf HTTPS umstellen

  • Cache leeren

  • externe Ressourcen prüfen

Unterschied zwischen Domain-Zertifikat und Wildcard-Zertifikat

Ein normales Zertifikat gilt für bestimmte Domains.

Beispiel:

deinedomain.de

oder:

www.deinedomain.de

Ein Wildcard-Zertifikat gilt für beliebige Subdomains einer Domain.

Beispiel:

*.deinedomain.de

Damit wären zum Beispiel abgedeckt:

  • panel.deinedomain.de

  • api.deinedomain.de

  • cloud.deinedomain.de

Wildcard-Zertifikate benötigen meistens eine DNS-Prüfung. Diese ist etwas aufwendiger als die normale HTTP-Prüfung.

Sicherheit des privaten Schlüssels

Zu jedem Zertifikat gehört ein privater Schlüssel.

Dieser private Schlüssel muss geheim bleiben.

Wenn jemand Zugriff auf den privaten Schlüssel hat, kann die Sicherheit deiner HTTPS-Verbindung gefährdet sein.

Achte deshalb darauf:

  • private Schlüssel nicht weitergeben

  • keine Zertifikatsdateien öffentlich speichern

  • keine Backups im Webverzeichnis ablegen

  • Dateirechte prüfen

  • Serverzugänge absichern

Support kontaktieren

Wenn die Einrichtung nicht funktioniert, kontaktiere den Support.

Gib dabei bitte folgende Informationen an:

  • betroffene Domain

  • verwendeter Webserver: Apache oder Nginx

  • Betriebssystem

  • genaue Fehlermeldung von Certbot

  • ob Port 80 und 443 geöffnet sind

  • ob die Domain bereits auf den Server zeigt

  • welche Befehle du bereits ausgeführt hast

Sende niemals private Schlüssel, Passwörter oder Zugangsdaten an den Support.

Zuletzt aktualisiert