65 lines
2.5 KiB
Markdown
65 lines
2.5 KiB
Markdown
# smgw-pki-automator
|
|
|
|
Automatisierungs-Tool für die Smart-Meter-Gateway (SMGW) PKI-Prozesse in einer
|
|
Test-/Labor-Umgebung. Erzeugt Schlüsselmaterial in einem HSM, beantragt
|
|
Zertifikate bei einer Sub-CA gemäß **BSI TR-03129-4**, erzeugt signierte
|
|
Initial-Konfigurationen gemäß **BSI TR-03109-1** und überwacht
|
|
Zertifikatslaufzeiten gemäß den Vorgaben der SM-PKI Certificate Policy.
|
|
|
|
## Ziel
|
|
|
|
- Asynchrone `RequestCertificate`-Aufrufe an die Test-Sub-CA (mTLS, SOAP).
|
|
- Asynchroner Callback-Endpunkt zur Annahme fertiger Zertifikate.
|
|
- Generierung signierter `iconfig.xml` + `iconfig.sig`, verpackt in
|
|
`iconfig.tar`.
|
|
- Periodische Prüfung auf ablaufende Zertifikate (Standard: 30 Tage vor Ablauf)
|
|
und automatische Erneuerung.
|
|
- Alerting per SMTP bei Fehlern.
|
|
|
|
## Architektur
|
|
|
|
Hexagonale Architektur (Ports & Adapters). Die fachliche Kernlogik
|
|
(`src/domain/`) kennt keine Infrastruktur. Sie spricht ausschließlich gegen
|
|
Ports (`src/ports/`). Konkrete Implementierungen liegen in `src/adapters/`.
|
|
|
|
Details: [`../docs/architecture.md`](../docs/architecture.md).
|
|
|
|
## Projektstruktur
|
|
|
|
```
|
|
src/
|
|
├── domain/ Geschäftslogik, Entities (Certificate, Gateway)
|
|
├── ports/ Traits (Inbound/Outbound) — Schnittstellen
|
|
├── adapters/ Konkrete Impl.: HSM, Sub-CA, SQLite, SMTP, Clock
|
|
├── builders/ Builder für SOAP-Requests und iconfig.xml
|
|
├── app.rs Composition Root (Dependency Injection)
|
|
└── main.rs Tokio-Runtime, Tracing, Boot
|
|
```
|
|
|
|
## Dokumentation
|
|
|
|
- [`../docs/architecture.md`](../docs/architecture.md) — Hexagonale Architektur, Ports & Adapters, Datenflüsse.
|
|
- [`../docs/bsi-compliance.md`](../docs/bsi-compliance.md) — Mapping BSI-Vorgaben → Code (TR-03129-4, TR-03109-1, SM-PKI CP).
|
|
- [`../docs/development.md`](../docs/development.md) — Lokales Setup (SoftHSM2-Container, mTLS-Testzertifikate, Build & Run).
|
|
|
|
## Quickstart
|
|
|
|
```bash
|
|
cargo check
|
|
cargo run
|
|
```
|
|
|
|
Für die volle Lab-Umgebung siehe [`../docs/development.md`](../docs/development.md).
|
|
|
|
## Status
|
|
|
|
Skeleton. Ports und Domäne stehen. Adapter sind Stubs, die `not implemented`
|
|
zurückgeben. Reihenfolge der Umsetzung siehe
|
|
[`../docs/architecture.md`](../docs/architecture.md#umsetzungsreihenfolge).
|
|
|
|
## Sicherheitshinweis
|
|
|
|
Dieses Tool ist **ausschließlich** für Test- und Labor-Umgebungen gedacht. Der
|
|
SoftHSMv2 erfüllt die "Security Level 1"-Anforderung der SM-PKI CP nur für
|
|
Entwicklungszwecke; für Produktion ist ein zertifiziertes HSM zwingend.
|