certbot
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 24.04 Noble Numbat
Ubuntu 22.04 Jammy Jellyfish
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
⚓︎ Serverdienste, optional – Grundlegende Familiarität im Umgang mit Server-Diensten
certbot 🇬🇧 ist ein Python-Skript, welches zur Erstellung und Verwaltung von Let's Encrypt-Zertifikaten dient. Damit wird die Verwendung von SSL-Zertifikaten wesentlich vereinfacht gegenüber herkömmlichen Verfahren wie getssl.
Voraussetzungen¶
Dieser Artikel beschreibt, wie man für einen fertig eingerichteten Nginx- oder Apache-Webserver Let's-Encrypt-Zertifikate mit Hilfe von certbot einrichtet.
Der Webserver muss so eingerichtet sein, dass er auch auf Port 443 (SSL) lauscht, ggf. muss die Firewall bearbeitet werden, sodass auch der Port 443 erreicht werden kann.
Eine registrierte Domain oder Subdomain z.B. example.org, test.example.org, etc, die auf den Webserver verweist und über die der Webserver erreichbar ist.
Es gibt auch eine Möglichkeit, certbot als snap zu installieren, dies wird hier nicht beschrieben.
Installation¶
certbot kann direkt aus den Paketquellen installiert werden:
certbot (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install certbot
Oder mit apturl installieren, Link: apt://certbot
Zusätzlich braucht man noch - je nach Server - das Paket python3-certbot-nginx bzw python3-certbot-apache:
python3-certbot-nginx (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install python3-certbot-nginx
Oder mit apturl installieren, Link: apt://python3-certbot-nginx
python3-certbot-apache (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install python3-certbot-apache
Oder mit apturl installieren, Link: apt://python3-certbot-apache
Für Anleitungen zur Installation und Nutzung weiterer Plugins siehe die Sektion.
Aufruf und Optionen¶
certbot muss mit Root-Rechten aufgerufen werden
sudo certbot [BEFEHL] [OPTIONEN] [-d DOMAIN] [-d DOMAIN] ...
und kennt unter anderem folgende Optionen und Befehle:
Option/Befehl | Beschreibung |
run | erstellen, holen und einrichten eines Zertifikates auf dem Server, Default-Einstellung |
certonly | erstellen und holen eines Zertifikates ohne einrichten auf dem Server |
-d | Domain oder Subdomain für die ein Zertifikat eingerichtet werden soll |
--dry-run | Probelauf ohne Speicherung der Ergebnisse |
--nginx | Der Zielserver läuft unter Nginx (Nginx-Plugin) |
--apache | Der Zielserver läuft unter Apache (Apache-Plugin) |
--rsa-key-size 3072 | Schlüssellänge einstellen (2048, 3072, 4096), 2048 Bits sind ab 2024 laut BSI obsolet, 4096 verlängert die Antwortzeit der Seite |
--elliptic-curve secp384r1 | Man kann statt RSA-Verschlüsselung auch elliptische Kurven verwenden (secp384r1 und secp521r1, nicht: 512!) |
certificates | einholen von Informationen über gespeicherte Zertifikate |
renew | erneuern eines Zertifikates *) |
revoke | ein Zertifikat widerrufen |
delete | ein Zertifikat vom Webserver löschen |
register | einen Account bei der Zertifizierungsstelle einrichten (muss einmalig vor der Einrichtung gemacht werden, danach ist dies auf diesem Server nicht mehr notwendig) |
unregister | einen Account löschen |
update_account | einen Account überarbeiten |
*) Hat certbot einmal ein Zertifikat für eine oder mehrere Domain/s installiert, dann sorgt es auch für die automatische Verlängerung dieser Zertifikate, der Nutzer braucht sich nicht darum zu kümmern.
Die Plugins haben jeweils eigene Optionen. Für eine vollständige Übersicht siehe die Kommandozeilen-Referenz 🇬🇧.
Plugins¶
Nach dem Generieren von Zertifikaten ist die Integration derselben in die Konfiguration der existierenden Server-Software vonnöten. Dazu ist Certbot mittels Erweiterungen bzw. Plugins in der Lage. Solche für die populären Webserver Apache und Nginx neben solchen, die keine bestimmte Server-Software voraussetzen und einer Vielzahl von DNS-Plugins werden von Certbot nativ (nach Installation entsprechender Pakete) unterstützt und sind durch entsprechende Kommandozeilen-Optionen anwählbar. Weitere Plugins für andere Server-Software werden von dritter Seite angeboten 🇬🇧 und müssen zusätzlich zum eigentlichen Certbot-Skript installiert werden. Weitere Informationen finden sich in der Projektdokumentation 🇬🇧.
Beispiele¶
Anmelden bei der Zertifizierungsstelle und einrichten eines Accounts:
sudo certbot register
Erstellen, holen und speichern eines Zertifikates für den lokalen Webserver (eine oder mehrere Domains):
sudo certbot --nginx -d example.org sudo certbot --nginx -d example.org -d www.example.org -d test.example.org
Dies erstellt die Zertifikate, korrespondierende private Schlüssel und legt diese jeweils in Verzeichnissen unter /etc/letsencrypt/live/ ab, die dem Namen der Domain entsprechen. Siehe auch den Abschnitt 🇬🇧 in der Projektdokumentation.
Der folgende Befehl liefert über den Webroot-Plugin ein Zertifikat für die Domain example.com, deren Dateien in dem Verzeichnis /var/www/example liegen und vom laufenden Webserver ausgeliefert werden (inklusive versteckter Dateien):
certbot certonly --webroot -w /var/www/example -d example.com
Dies hat den Vorteil, dass der Webserver während der Ausstellung des Zertifikates nicht angehalten werden muss. Mehr zur Funktionsweise des Webroot-Plugins findet sich hier 🇬🇧.
Links¶