Skip to content

[Phase 1.8] HTTPS/TLS Konfiguration und Zertifikat-Management #8

@rettde

Description

@rettde

Beschreibung

Die SOVD-Spezifikation (ISO 17978-1) fordert HTTPS-Unterstuetzung. Das Requirement req~sovd-api-http-server ist als draft markiert und enthaelt den TODO: Maybe connection establishment/encryption also needs to be done through HSM?. Aktuell startet der Webserver nur HTTP (ohne TLS).

Betroffene Dateien

  • cda-sovd/src/lib.rslaunch_webserver() Funktion
  • cda-main/ — Konfiguration und Startup
  • cda-plugin-security/ — Security Plugin Interfaces
  • opensovd-cda.toml — Konfigurationsdatei

Implementierungs-Tasks

  • TLS-Konfiguration in opensovd-cda.toml definieren
    • tls.enabled (bool)
    • tls.cert_path (Pfad zum Zertifikat)
    • tls.key_path (Pfad zum Private Key)
    • tls.ca_path (Optional: CA Bundle fuer mTLS)
    • tls.min_version (TLS 1.2 oder 1.3)
  • axum-server mit rustls oder native-tls Backend integrieren
  • launch_webserver() um TLS-Modus erweitern
  • Zertifikat-Rotation ohne Server-Neustart (File-Watcher)
  • mTLS (Mutual TLS) als optionale Konfiguration
  • HSM-Plugin Interface fuer Zertifikat/Key-Zugriff (Trait)
  • Redirect HTTP -> HTTPS (optional)
  • Konfigurierbare Cipher Suites

Unit Tests (Pflicht)

  • Test: Server startet mit gueltigem TLS-Zertifikat
  • Test: Server verweigert Start bei ungueltigem Zertifikat
  • Test: Server verweigert Start bei fehlendem Key
  • Test: TLS 1.2 Verbindung erfolgreich
  • Test: TLS 1.3 Verbindung erfolgreich
  • Test: TLS < 1.2 wird abgelehnt (wenn min_version = 1.2)
  • Test: mTLS mit Client-Zertifikat erfolgreich
  • Test: mTLS ohne Client-Zertifikat -> Verbindung abgelehnt
  • Test: HTTP-Modus funktioniert weiterhin (Backward Compatibility)
  • Test: Config-Parsing fuer alle TLS-Parameter

CrossCheck & Constraints

  • Pruefung gegen ISO 17978-1 HTTPS Requirements
  • Pruefung gegen OWASP TLS Best Practices
  • Constraint: Mindestens TLS 1.2 (TLS 1.0/1.1 verboten)
  • Constraint: Private Key Dateiberechtigungen pruefen (0600)
  • Constraint: Zertifikat-Ablauf pruefen und warnen (30 Tage vorher)
  • Constraint: Self-signed Zertifikate nur im Dev-Modus erlauben
  • Regressionstests: HTTP-Modus unveraendert

Security Audit

  • Private Key darf nicht im Log erscheinen
  • Private Key darf nicht ueber API abrufbar sein
  • Cipher Suite Audit: Nur sichere Cipher erlauben (kein RC4, DES, etc.)
  • Certificate Pinning Option evaluieren
  • HSTS Header setzen wenn HTTPS aktiv
  • Key-Material im Speicher nach Verwendung nullen (zeroize)
  • HSM Interface: Key darf Trusted Execution Environment nie verlassen
  • Penetration Test Szenario: Man-in-the-Middle bei fehlkonfiguriertem TLS

Zeitschaetzung

Aufwand
Konventioneller Entwickler 3 PT
KI-Agent 1 PT

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions