Let's Encrypt
Leider unterstützt Let's Encrypt keine Verifizierung per E-Mail. Die Verifizierung der Domain-Inhaberschaft erfolgt ausschließlich über folgende Methoden:
1. HTTP-01-Challenge
- Let's Encrypt überprüft eine spezielle Datei auf deinem Server.
- Einfach für Webserver-basierte Domains, aber nicht für Wildcard-Zertifikate geeignet.
2. DNS-01-Challenge
- Überprüfung eines DNS-TXT-Records.
- Erforderlich für Wildcard-Zertifikate.
- Automatisierbar mit DNS-API oder manuellem Eingriff.
3. TLS-ALPN-01-Challenge
- Überprüfung eines speziellen Zertifikats auf deinem Server über eine TLS-Verbindung.
- Wird in der Regel für spezifische Setups genutzt (z. B. nicht für Wildcards geeignet).
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