TLS-Gate: NetBox-Connector Schritt 4, Geräte-Zertifikate der Node-CA
Von: Branko → OZMAI, Crew
Stand: 11. Oktober 2026
Typ: EXTERNAL_SOURCE (Inbox-Regel §3, keine automatische Geltung, kein Brain-Status)
Charakter: NACHTRAG zu 2026-10-11_TLS-GATE-NETBOX-SPIEGEL-LIVE-SEEDS-OZM03-NACHTRAG_BRANKO.md.
Quelle: Repo TLS-Gate-Mock-Pipeline main 84a6925 (Code) + 5f8dae9 (VM-Tests), ungetaggt. Entwurf docs/DESIGN_NETBOX_CONNECTOR.md §6.
Belege: lokal 39 von 39 Suiten grün, darunter test_device_cert 42 (neu) und test_netbox_ui 18. VM aus 84a6925 (dirty=0): run 91, p3 48, p4 54, p5 31, p6 22, p7 53, p8 23, p9 4 (neu).
Legende: ✅ real/gebaut · 🧪 gebaut, getestet, nicht live · 🛠 spezifiziert · ⬜ OPEN · ❓ UNKNOWN
1. Entscheidung
Branko, 11.10.: „nein, kein mac/wg ins zertifikat — schritt 4 starten“. Im Entwurf steht das als N8: Das Zertifikat trägt nur den Gerätenamen. Die Bindung Gerät ↔ Fingerabdruck steht nur in device_certs und im Audit, weil ein Zertifikat weitergereicht wird.
2. Gebaut 🧪 (im Wurzel-Repo, nicht live)
node_ca.php device-issue <nb-id> <csr>,device-list,device-cert,device-revoke.- Ausgestellt wird nur, wenn alles zutrifft:
- Das Gerät steht im Spiegel der eigenen Gruppe und ist nicht
weg. NetBox bleibt führend. - Der Zugang hat Kontobindung. Krümel-Tenants bekommen in Schritt 4 keine Zertifikate (Regel b).
- Es gibt noch kein gültiges Zertifikat für dieses Gerät. Sonst heißt es erst widerrufen, kein stilles Umbinden (N5).
- Das CSR-Subject ist genau
CN=<gerätename>. Ein OU mit einer MAC wird abgelehnt, weilopenssl_csr_signden Subject sonst ins Zertifikat übernehmen würde. - Die CSR-Signatur ist gültig. Das belegt, dass der Absender den Schlüssel besitzt.
- Der private Schlüssel entsteht auf dem Gerät und kommt nie ins Gate.
- Zertifikat: CN + SAN
DNS:<gerätename>,CA:FALSE, nurclientAuth, 90 Tage, nicht öffentlich vertrauenswürdig. Der Test prüft im Text und im DER-Kodierten, dass weder MAC noch wg-Key noch NetBox-ID darin stehen. - Daten:
device_certsunddevice_cert_revocationssind nur anhängbar (Trigger unter SQLite und MariaDB, Migration0007). Widerrufene Geräte-Zertifikate stehen in derselben CRL wie widerrufene Bestellungen.openssl verify -crl_checkmeldet sie als widerrufen. Danach ist eine Neuausstellung mit neuem Schlüssel möglich. - Audit:
cli.node_ca_device_issue. Bei ok mit Ankernetbox:<id>, SHA-256, Seriennummer, Tenant undctx.build. Bei einer Ablehnung mitgrund, es wird nichts angelegt. Dazucli.node_ca_device_revoke. - Web:
netbox.php(Wurzel) zeigt je Gerät den Stand des neuesten Zertifikats. Ausgestellt wird nur auf der Node.
3. Was nicht gebaut ist, und warum
❓ Wo stellt die Node-CA für die ozm-Knoten aus? Die Node-CA ist im Frontend native_php bewusst nicht enthalten (native_php/README.md, „Bewusst nicht enthalten“), und aus diesem Frontend werden die VM-Knoten ozm01–03 gebaut. Auf ozm03 kann deshalb heute nichts ausgestellt werden. Die VM führt nur die Tabellen mit (p9 prüft auch, dass dort keine Node-CA liegt). Die frühere Entscheidung hat der Entwickler nicht von sich aus umgestoßen. Zur Wahl stehen:
1. Die Node-CA kommt ins Frontend, als eigener, gekennzeichneter Baustein.
2. Die Node-CA bleibt auf der Ansible-Node (Wurzel), und die ozm-Knoten bekommen die Zertifikate von dort.
3. Ein eigener CA-Knoten, getrennt vom Frontend.
4. Offen
- ❓ Ort der Node-CA (§3), Entscheidung Branko.
- ⬜ Geführter Reset bei
hardware_geaendert: Widerruf und Neuausstellung als ein Schritt. - ⬜ Zertifikate für Krümel-Tenants (Regel b).
- ⬜ Kein echtes Gerät hat bisher ein Zertifikat. Alle Belege stammen aus synthetischen Tests.