Files
management/docs/issues/0007-cfgmon-01-zertifikatserneuerung-braucht-offene.md
T
Thore CimbalandClaude Opus 4.8 e09ab508af docs(issues): close #0007 done — DNS-01 live and verified
Cert renewal switched to DNS-01 (IONOS): test issuance validated end-to-end
(LE YR1, valid to 2026-11-12), the shared letsencrypt resolver now renews
rohana/selendis via DNS-01, so the September renewal needs no open port 443.
Syncs the canonical file with the already-closed git.lab tracker issue 7.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-14 12:00:00 +00:00

5.0 KiB

type, id, status, created, milestone, priority, due, host, gitlab_iid, related
type id status created milestone priority due host gitlab_iid related
issue 0007 done 2026-08-01 M1 high 2026-09-28 cfgmon 7

CFGMON-01: Zertifikatserneuerung braucht offene Ports — zeitkritisch ab 2026-09-28

Import aus management#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


Ü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.tlschallengeacme.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.