3.0 KiB
smgw-pki
Automatisierung der Smart-Meter-Gateway-PKI-Prozesse + Operator-Konsole. Test- und Labor-Umgebung gemäß BSI TR-03129-4, TR-03109-1 und SM-PKI Certificate Policy.
Pakete
| Pfad | Inhalt |
|---|---|
backend/ |
Rust-Service (smgw-pki-automator) — Sub-CA-Anbindung, HSM, Scheduler |
frontend/ |
React-Konsole (smgw-pki-console) — Operator-UI auf gleicher API |
deploy/ |
Docker-Compose, nginx-Config, .env.example |
docs/ |
BSI-Architektur + Compliance-Mapping + Entwicklungs-Setup |
Kontextdokumente in jedem Paket: backend/CLAUDE.md, frontend/CLAUDE.md und das Top-Level CLAUDE.md.
Quickstart
Voraussetzungen: Docker (+ compose), just. Für lokale Entwicklung ohne Container zusätzlich Rust ≥ 1.85 und Bun ≥ 1.2.
just # Rezepte auflisten
cp deploy/.env.example deploy/.env
just up # Stack hochfahren
Frontend: http://localhost:8080. Backend läuft intern auf backend:8443 — siehe deploy/compose.yaml.
Login im Lab: Cert-Subject wird vom Reverse-Proxy via X-Forwarded-Cert-Subject gesetzt. Solange DEV_AUTH=1 (Standard in .env), wird zusätzlich ein Dev-Subject im Login-Formular akzeptiert.
Häufige Befehle
just up # build + run
just down # stoppen
just logs backend # logs eines Services
just rebuild backend # ohne Cache neu bauen
just dev-backend # cargo run (dev-auth + CORS für Vite)
just dev-frontend # bun run dev → http://localhost:5173
just gen-api # Rust → openapi.json → TS-Client
just openapi-diff # Drift-Check (CI-tauglich)
just check # cargo check + bun typecheck
just test # cargo test
API-Vertrag
Single source of truth ist das Rust-Backend. utoipa-axum emittiert OpenAPI, openapi-typescript baut daraus den TS-Client.
just gen-api # nach jeder API-Änderung im Backend
frontend/openapi.json ist eingecheckt für reproduzierbare Builds. just openapi-diff schlägt fehl, wenn der Snapshot von der aktuellen Rust-Quelle abweicht.
Sicherheit
- Nicht für Produktion. SoftHSMv2 erfüllt SM-PKI CP Level 1 nur für Entwicklungszwecke.
- mTLS-Termination erfolgt vor dem Frontend-nginx (Caddy/Traefik o. ä.). Der Proxy setzt
X-Forwarded-Cert-Subject. - Sitzungen via
HttpOnly; SameSite=Strict; Secure-Cookie. TTL 8 h. - Callback-Handler des Backends prüft mTLS-Cert + SOAP-Signatur (Status TODO, siehe
docs/bsi-compliance.md).
Status
Skeleton. Sub-CA-Adapter, HSM-Anbindung und iconfig-Signatur sind Stubs. Frontend ist vollständig funktional gegen das aktuelle Backend; Aktionen, die noch nicht implementiert sind, geben deterministisch 501 not_implemented zurück.
Umsetzungsreihenfolge: docs/architecture.md#umsetzungsreihenfolge.