[[Vorlage(Getestet, jammy, noble)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Programme_starten: Starten von Programmen] [:Terminal: Ein Terminal öffnen] [:mit Root-Rechten arbeiten:] [:Serverdienste:] optional – Grundlegende Familiarität im Umgang mit Server-Diensten }}} [[Inhaltsverzeichnis()]] [[Bild(./certbot-logo.png, 90, align=left)]] [https://certbot.eff.org/ certbot] {en} ist ein [:Python:]-Skript, welches zur Erstellung und Verwaltung von [wikipedia:Let's Encrypt:]-Zertifikaten dient. Damit wird die Verwendung von SSL-Zertifikaten wesentlich vereinfacht gegenüber herkömmlichen Verfahren wie [:Howto/getssl:getssl]. = Voraussetzungen = Dieser Artikel beschreibt, wie man für einen fertig eingerichteten [:nginx: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 [:Personal_Firewalls: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 müssen Root-Rechte [4] z.B. per [:sudo:] vorliegen. 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: {{{#!vorlage Paketinstallation certbot, universe }}} Zusätzlich braucht man noch - je nach Server - das Paket '''python3-certbot-nginx''' bzw '''python3-certbot-apache''': {{{#!vorlage Paketinstallation python3-certbot-nginx, universe }}} {{{#!vorlage Paketinstallation python3-certbot-apache, universe }}} Für Anleitungen zur Installation und Nutzung weiterer Plugins siehe die [#Plugins Sektion]. = Aufruf und Optionen = '''certbot''' muss mit Root-Rechten aufgerufen werden {{{#!vorlage Befehl sudo certbot [BEFEHL] [OPTIONEN] [-d DOMAIN] [-d DOMAIN] ... }}} und kennt unter anderem folgende Optionen und Befehle: {{{#!vorlage Tabelle 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 Plugins] haben jeweils eigene Optionen. Für eine vollständige Übersicht siehe die [https://eff-certbot.readthedocs.io/en/latest/using.html#certbot-command-line-options Kommandozeilen-Referenz] {en}. == 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 [https://eff-certbot.readthedocs.io/en/latest/using.html#third-party-plugins angeboten] {en} und müssen zusätzlich zum eigentlichen Certbot-Skript installiert werden. Weitere Informationen finden sich in der [https://eff-certbot.readthedocs.io/en/latest/using.html#getting-certificates-and-choosing-plugins Projektdokumentation] {en}. = Beispiele = Anmelden bei der Zertifizierungsstelle und einrichten eines Accounts: {{{#!vorlage Befehl sudo certbot register }}} Erstellen, holen und speichern eines Zertifikates für den lokalen Webserver (eine oder mehrere Domains): {{{#!vorlage Befehl 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 [https://eff-certbot.readthedocs.io/en/latest/using.html#where-are-my-certificates Abschnitt] {en} 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): {{{#!vorlage Befehl 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 [https://eff-certbot.readthedocs.io/en/latest/using.html#webroot hier] {en}. = Links = * [https://certbot.eff.org/ Projektseite] {en} * [https://eff-certbot.readthedocs.io/en/latest/index.html Dokumentation] {en} * [https://letsencrypt.org/de/ Homepage von Let’s Encrypt] {de} #tag: DNS, Internet, Let's-Encrypt, letsencrypt, Netzwerk, Server, Sicherheit, SSL, System, TLS