Kostenloses SSL-Zertifikat mit Let's Encrypt und Certbot einrichten
Kostenloses SSL-Zertifikat für Ihren Linux-Server: So installieren Sie Certbot unter Debian und Ubuntu, stellen ein Let's-Encrypt-Zertifikat für Apache aus und lassen es automatisch verlängern.
Ein SSL-Zertifikat von Let's Encrypt kostet nichts, ist in wenigen Minuten eingerichtet und wird von jedem gängigen Browser akzeptiert. In dieser Anleitung richten Sie HTTPS auf einem eigenen Linux-Server mit Apache ein: unter Debian 13, Debian 12, Ubuntu 24.04 LTS und Ubuntu 22.04 LTS.
Die Ausstellung übernimmt Certbot, der offizielle ACME-Client der Electronic Frontier Foundation. Certbot beantragt das Zertifikat, trägt es in die Apache-Konfiguration ein und verlängert es danach selbstständig über einen systemd-Timer.
Voraussetzungen
- Eine Domain, deren A-Record (und bei IPv6 zusätzlich der AAAA-Record) auf Ihren vServer oder Rootserver zeigt.
- Ein laufender Apache2-Webserver mit einem VirtualHost für diese Domain.
- Root-Zugriff über SSH.
- Port 80 und Port 443 müssen von außen erreichbar sein. Let's Encrypt prüft die Domain über Port 80.
Prüfen Sie zuerst, ob die Domain tatsächlich auf Ihren Server zeigt. Geben Sie Ihre Domain dazu unter https://check-host.net/ ein. Erscheint dort die IP-Adresse Ihres Servers, können Sie fortfahren. Zeigt der DNS noch auf ein altes Ziel, warten Sie die Aktualisierung ab, sonst schlägt die Ausstellung fehl.
System aktualisieren
Bringen Sie zuerst die Paketliste und die installierten Pakete auf den aktuellen Stand:
apt update && apt upgrade -y
Certbot installieren
Es gibt zwei übliche Wege. Das Distributionspaket ist der einfachste und für die meisten Server völlig ausreichend. Das Snap-Paket liefert immer die neueste Certbot-Version und wird von der Electronic Frontier Foundation offiziell empfohlen.
Variante 1: Certbot aus dem Distributions-Repository
Unter Debian und Ubuntu liegen Certbot und das Apache-Plugin direkt in den Paketquellen:
apt install certbot python3-certbot-apache -y
Das früher verbreitete Paket "python-certbot-apache" gehörte zu Python 2 und existiert nicht mehr. Auf allen aktuellen Debian- und Ubuntu-Versionen ist "python3-certbot-apache" der richtige Paketname.
Variante 2: Certbot über snap installieren
Wenn Sie die jeweils neueste Certbot-Version möchten, etwa für DNS-Plugins oder Wildcard-Zertifikate, installieren Sie Certbot als Snap. Entfernen Sie vorher eine eventuell vorhandene Paketinstallation, damit sich beide nicht ins Gehege kommen:
apt remove certbot -y
snap install core
snap refresh core
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
Zertifikat ausstellen und in Apache einbinden
Der schnellste Weg ist das Apache-Plugin. Certbot liest die vorhandenen VirtualHosts, beantragt das Zertifikat und schreibt die passende SSL-Konfiguration selbst:
certbot --apache -d MeineDomain.de -d www.MeineDomain.de
Wenn Sie die Apache-Konfiguration lieber selbst kontrollieren, können Sie die Domainprüfung über das Webroot-Verzeichnis laufen lassen. Geben Sie dabei genau das Verzeichnis an, das der VirtualHost als DocumentRoot verwendet:
certbot --authenticator webroot --installer apache -w /var/www/MeineDomain.de -d MeineDomain.de -d www.MeineDomain.de
Liegt Ihre Webseite im Standardverzeichnis, lautet der Befehl:
certbot --authenticator webroot --installer apache -w /var/www/html/ -d MeineDomain.de -d www.MeineDomain.de
Die Abfragen von Certbot
Beim ersten Aufruf stellt Certbot einige Fragen:
- E-Mail-Adresse: Geben Sie eine Adresse an, die Sie wirklich lesen. Let's Encrypt verschickt darüber die Warnung, wenn eine Verlängerung ausbleibt.
- Nutzungsbedingungen: Mit "A" stimmen Sie zu.
- Newsletter der Electronic Frontier Foundation: "Y" für ja, "N" für nein. Das ist freiwillig und hat auf das Zertifikat keinen Einfluss.
- Weiterleitung auf HTTPS: Wählen Sie die Option "Redirect", damit Apache alle HTTP-Aufrufe automatisch auf HTTPS umleitet.
Danach zeigt Certbot den Pfad zum Zertifikat an. Die Dateien liegen unter /etc/letsencrypt/live/MeineDomain.de/. Bearbeiten Sie diese Dateien nicht von Hand, sie werden bei jeder Verlängerung neu geschrieben.
Automatische Verlängerung prüfen
Ein Zertifikat von Let's Encrypt ist 90 Tage gültig. Certbot erneuert es automatisch, sobald weniger als 30 Tage Restlaufzeit übrig sind. Dafür bringt das Paket einen systemd-Timer mit. Prüfen Sie, ob er aktiv ist:
systemctl list-timers certbot.timer
Ist der Timer nicht aktiv, aktivieren Sie ihn:
systemctl enable --now certbot.timer
Testen Sie den Ablauf anschließend im Trockenlauf. Dabei wird nichts ausgestellt, Certbot spielt die Verlängerung nur durch:
certbot renew --dry-run
Damit Apache das neue Zertifikat nach einer Verlängerung auch wirklich benutzt, hinterlegen Sie einmalig einen Deploy-Hook:
certbot renew --deploy-hook "systemctl reload apache2"
Zertifikate anzeigen und entfernen
Einen Überblick über alle auf dem Server verwalteten Zertifikate liefert:
certbot certificates
Ein nicht mehr benötigtes Zertifikat entfernen Sie so, damit Certbot es nicht weiter zu verlängern versucht:
certbot delete --cert-name MeineDomain.de
Häufige Fehler
- "Could not bind to port 80": Ein anderer Dienst belegt Port 80. Beenden Sie ihn oder nutzen Sie die Webroot-Methode, die den laufenden Apache verwendet.
- "Invalid response from http://.../.well-known/acme-challenge/...": Die Domain zeigt nicht auf diesen Server, eine Firewall blockiert Port 80, oder das angegebene Webroot-Verzeichnis passt nicht zum VirtualHost.
- "The requested apache plugin does not appear to be installed": Das Paket "python3-certbot-apache" fehlt.
- "too many certificates already issued": Sie sind in ein Limit von Let's Encrypt gelaufen. Testen Sie Konfigurationen künftig mit
--dry-run, bevor Sie ein echtes Zertifikat beantragen. - Browser zeigt weiter eine Warnung: Leeren Sie den Browser-Cache und prüfen Sie, ob Apache nach der Ausstellung neu geladen wurde.
HTTP dauerhaft auf HTTPS umleiten
Wenn Sie bei der Certbot-Abfrage die Weiterleitung nicht aktiviert haben, können Sie sie jederzeit nachrüsten. Wie das über eine .htaccess-Datei funktioniert, beschreiben wir in einem eigenen Beitrag zur Weiterleitung von HTTP auf HTTPS.
Häufige Fragen
Was kostet ein SSL-Zertifikat von Let's Encrypt?
Wie lange ist ein Let's-Encrypt-Zertifikat gültig?
Muss ich das Zertifikat von Hand verlängern?
Funktioniert Let's Encrypt auch für Subdomains?
Warum schlägt die Domainprüfung fehl?
2023-2026 KernelHost GmbH. Alle Rechte vorbehalten. Diese Anleitung ist urheberrechtlich geschützt. Eine Veröffentlichung auf anderen Webseiten, auch auszugsweise oder in bearbeiteter Form, ist ohne unsere schriftliche Zustimmung nicht gestattet. Zitate mit Quellenangabe und Link sind ausdrücklich willkommen.

