--- 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 `.` (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 `.` 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.