Files
management/docs/issues/0007-cfgmon-01-zertifikatserneuerung-braucht-offene.md
T

93 lines
5.0 KiB
Markdown
Raw Normal View History

---
type: issue
id: "0007"
status: done
created: 2026-08-01
milestone: M1
priority: high
due: 2026-09-28
host: cfgmon
gitlab_iid: "7"
related: []
---
# CFGMON-01: Zertifikatserneuerung braucht offene Ports — zeitkritisch ab 2026-09-28
> Import aus [management#7](https://git.lab/axion1337.chat/management/-/issues/7) (2026-08-11). Kommentare und Verlauf bleiben dort; kanonisch ist ab jetzt diese Datei (ADR-0012).
Certs für `selendis`/`rohana` laufen am **2026-10-28** ab; Traefik erneuert ab
Ende September via TLS-ALPN-01 — braucht **Port 443 offen aus dem ganzen Internet**
(LE veröffentlicht keine Validierungs-IPs, Multi-Perspective-Validation). Der
Normalzustand der Umgebung (443 auf eigene IP beschränkt) lässt die Erneuerung
**still** scheitern → Self-Signed-Default-Cert. IPv6-Pfad ist geprüft frei
(`::/0` separat in der Hetzner-Firewall-Regel; `0.0.0.0/0` deckt IPv6 NICHT ab) —
die September-Erneuerung ist aber der **erste** Lauf, der IPv6 überhaupt versucht.
**Entscheidung nötig:**
- **A — Ports offen lassen** bzw. zur Erneuerung öffnen (Kalendereintrag Mitte
September, nicht aufs Ablaufdatum!)
- **B — auf DNS-01 umstellen (empfohlen):** TXT-Validierung, kein offener Port,
ermöglicht Wildcards. Braucht IONOS-API-Token als Traefik-Secret; Voraussetzung
(versionierter Traefik-Stack) ist seit CFGMON-02 erfüllt.
Quelle: [hosts/cfgmon.md](https://git.lab/axion1337.chat/management/-/blob/main/hosts/cfgmon.md)
---
*Übernommen aus dem Backlogs-Markdown beim Framework-Umbau 2026-08-01 (voller Wortlaut: Git-Historie der Datei).*
## Plan (2026-08-14) — eingeplant
**Weg B (DNS-01)** umsetzen — im Issue bereits als empfohlen markiert: entfernt die
Port-Fenster-Abhängigkeit komplett (kein offener 443, keine Unsicherheit beim IPv6-Erstlauf)
und ermöglicht Wildcards; die Voraussetzung (versionierter Traefik-Stack) ist seit CFGMON-02
erfüllt. Ausführung terminlich **vor Mitte September** (Puffer vor Ablauf 2026-10-28).
Schritte (B):
1. IONOS-API-Token als Traefik-Secret hinterlegen (SOPS-verschlüsselt).
2. Traefik-ACME-Resolver auf **DNS-01 (IONOS-Provider)** umstellen, committen → ausrollen.
3. Test-Erneuerung erzwingen; TXT-Record-Setzung + ausgestelltes Cert für `selendis`/`rohana`
prüfen (kein Self-Signed-Fallback).
4. Erst nach erfolgreichem DNS-01-Cert die verbliebene 443-Ausnahme schließen.
**Fallback A (Ports öffnen)** — nur falls B verworfen wird: **Kalender-Checkpoint Mitte
September** (NICHT aufs Ablaufdatum warten). 443 für `0.0.0.0/0` **und** `::/0` öffnen
(IPv6 separat!), Erneuerung + IPv6-Erstlauf beobachten, danach wieder schließen.
## In Arbeit (2026-08-14) — Weg B vorbereitet
Der Traefik-Stack liegt in `axion1337.chat/thread-net-git` (Compose, Deploy **manuell** auf
CFGMON: `cd /opt/thread-net-git && docker compose up -d`; kein Runner mehr). Der DNS-01-Umbau
ist als Diff fertig (lokal geprüft, noch **nicht** gepusht — gekoppelt an Token + Deploy):
- `reverse-proxy`-Command: `acme.tlschallenge``acme.dnschallenge` + `provider=ionos` +
`resolvers=1.1.1.1:53,8.8.8.8:53` (CFGMON ist öffentlich, keine Lab-Port-53-Interception).
- `environment: IONOS_API_KEY=${IONOS_API_KEY}` — Token aus `/opt/thread-net-git/.env`
(git-ignoriert), Format `<prefix>.<secret>` (IONOS Developer DNS-API).
- `acme.json` (letsencrypt-Volume) bleibt — bestehende Certs gelten bis 2026-10-28, Erneuerung
läuft dann über DNS-01. Volume NICHT löschen.
**Zwei menschliche Abhängigkeiten (blockieren den Abschluss):**
1. **IONOS Developer DNS-API-Key** anlegen (der `<prefix>.<secret>` gehört in die Host-`.env`).
2. **Deploy + Verifikation auf CFGMON** (kein SSH-Zugang von hier): `.env` setzen →
`docker compose up -d reverse-proxy` → Test-Erneuerung erzwingen → TXT + neues Cert prüfen.
Danach: 443-Weltöffnung ist für ACME nicht mehr nötig (nur noch für die Dienste selbst).
## Erledigt 2026-08-14 — Weg B (DNS-01) live & verifiziert
Umgestellt und end-to-end bestätigt. Der IONOS-DNS-API-Key liegt in der Host-`.env`
(`/opt/thread-net-git/.env`, git-ignoriert); die Compose-Umstellung ist git.lab-Commit
`8d089e2` (`thread-net-git`), auf CFGMON deployt.
- **Testausstellung** (Wegwerf-Router `dns01-test.axion1337.de`): DNS-01 gelöst, TXT via
IONOS-API gesetzt, `The server validated our request` 15:33:04 → Zertifikat 15:33:07.
- **Live geprüft**: `openssl s_client` (SNI `dns01-test`) → Issuer **Let's Encrypt (YR1)**,
gültig bis **2026-11-12** — echtes LE-Cert über DNS-01.
- **Produktiv-Resolver** `letsencrypt` steht auf `dnschallenge=true, provider=ionos` und
erneuert damit auch `rohana`/`selendis` → die September-Erneuerung braucht **kein offenes
Port 443** mehr; Zeitkritikalität ab 2026-09-28 entfällt.
- Test-Container entfernt; git.lab-Tracker-Issue 7 geschlossen (Parallel-Session).
**Rest-Hinweis:** Die September-Erneuerung ist der erste *unbeaufsichtigte* DNS-01-Lauf für
die Bestandszertifikate. Nach dem heutigen Test spricht nichts dagegen; wer ganz sichergehen
will, wirft Mitte September einmal kurz einen Blick ins Traefik-Log.