## Bitte hier die Versionen kommagetrennt eintragen, mit denen getestet wurde.
[[Vorlage(Getestet, jammy focal)]]

## Bitte hier alle wesentlichen Wikiartikel auflisten, deren Kenntnis vorausgesetzt wird.
{{{#!vorlage Wissen
[:Pakete installieren: Installation von Programmen]
[:Programme_starten: Starten von Programmen]
[:Terminal: Ein Terminal öffnen]
[:mit Root-Rechten arbeiten:]
}}}

[[Inhaltsverzeichnis()]]
[[Bild(./certbot-logo.png, 90, align=left)]]
[https://certbot.eff.org/ certbot] {en} ist ein Script, 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 bei einen fertig eingerichteten Webserver Apache oder Nginx 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 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
}}}

= Aufruf und Optionen =

'''certbot''' muss mit Root-Rechten aufgerufen werden

{{{#!vorlage Befehl
sudo certbot <optionen>
}}}

und kennt folgende Optionen:
{{{#!vorlage Tabelle
<tableclass="zebra_start2" rowclass="kopf">Option
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
+++
`--apache`
Der Zielserver läuft unter Apache
+++
`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.

= 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
}}}

= Links =
 * [https://certbot.eff.org/ Projektseite] {en}
 * [https://letsencrypt.org/de/ Homepage von Let’s Encrypt] {de}

#tag: DNS, Internet, Let's-Encrypt, letsencrypt, Netzwerk, Server, Sicherheit, SSL, System, TLS