Skip to main content

Let's Encrypt

Zertifikat/Wildcardzertifikat erstellen

In der offiziellen Anleitung soll snap für die Installation von certbot verwendet werden.
https://certbot.eff.org/instructions

Was spricht dagegen? Es ist ein Paketformat von Canonical. Die Firma hinter Ubuntu kontrolliert den Snap-Server (Snap-Store) von welchem Snap-Anwendungen installiert werden können, dieser ist proprietär, im Gegensatz zu flatpak können keine alternativen Server zum Einsatz kommen. AppImage und Flatpak können ohne Rootrechte genutzt bzw. installiert werden.
Behält man die /home Partition nach einer Neuinstallation muss man diese nicht neu installieren.
Im LXC-Container funktioniert kein snapd.

Alternativ mit apt installieren

apt install certbot
Zertifikat einmalig erzeugen

Danach reicht ein certbot renew

certbot certonly --manual --preferred-challenges=dns --email system@foo.info --server https://acme-v02.api.letsencrypt.org/directory --agree-tos -d *.lan.foo.info

Erklärung:

Der Befehl `certbot certonly` ist ein Befehl, der das Certbot-Tool aufruft, um ein SSL/TLS-Zertifikat zu erhalten, ohne es automatisch in einen Webserver zu installieren.
Hier ist eine Beschreibung jedes Parameters:

- `--manual`: Dieser Parameter weist Certbot an, den manuellen Modus zu verwenden. Dies bedeutet, dass du manuell die erforderlichen Schritte zur Validierung deiner Domain durchführen musst, um das Zertifikat zu erhalten.
  
- `--preferred-challenges=dns`: Mit diesem Parameter bestimmst du, dass die bevorzugte Methode zur Überprüfung des Domainbesitzes die DNS-basierte Challenge ist. Dies bedeutet, dass du DNS-Einträge für deine Domain hinzufügen oder ändern musst, um zu beweisen, dass du Kontrolle über die Domain hast.

- `--email system@foo.info`: Hier gibst du deine E-Mail-Adresse an, die von Let's Encrypt für Mitteilungen und Benachrichtigungen im Zusammenhang mit dem Zertifikat verwendet wird.

- `--server https://acme-v02.api.letsencrypt.org/directory`: Dieser Parameter legt den Server fest, mit dem Certbot kommunizieren soll, um das Zertifikat zu erhalten. In diesem Fall ist es der Let's Encrypt-Server.

- `--agree-tos`: Mit diesem Parameter bestätigst du deine Zustimmung zu den Nutzungsbedingungen von Let's Encrypt, was erforderlich ist, um ein Zertifikat von ihnen zu erhalten.

- `-d *.lan.foo.info`: Hier gibst du die Domain an, für die das Zertifikat ausgestellt werden soll. Das `*` vor der Domain bedeutet, dass das Zertifikat für alle Subdomains von `lan.foo.info` gültig sein soll.

DNS TXT Records

Danach werden zwei DNS TXT Records erzeugt, die im DNS-Server des Domain-Anbieters/Verwalter eingetragen werden müssen.
Im Beispiel _acme-challenge.lan.foo.info

Beispiel:

TTL\\
_acme-challenge.k8s.lej

Domain\\
eis.foo

Record\\
TXT

Inhalt\\
wof8D5dlEPU_5jPkm4fc7CHyHAMsTioAcpH-1OfOJ2

Cronjob einrichten

Erneuert die Zertifikate aller 2 Monate (Gültigkeit 3 Monate) und macht ein reload vom apache2

0 0 1 */2 * certbot renew --post-hook "systemctl reload apache2"

Zertifikat widerrufen (löschen)

Den Dummy im Befehl durch die echte Domain ersetzen.

certbot revoke --cert-path /etc/letsencrypt/archive/domain.foo.de/cert1.pem