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
80und443
Beispiele für Domains:
deinedomain.dewww.deinedomain.depanel.deinedomain.deapi.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.
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:
A
@
IPv4-Adresse deines Servers
A
www
IPv4-Adresse deines Servers
Wenn du IPv6 verwendest, kann zusätzlich ein AAAA-Record gesetzt werden.
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.
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:
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
80in 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
443in 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
80blockiertWeiterleitung 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://ändernCMS-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.deapi.deinedomain.decloud.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
80und443geöffnet sindob 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