Files
Projektarbeit-MYP/backend/utils/ssl_manager.py

60 lines
2.1 KiB
Python

"""
SSL-Manager für Mercedes-Benz MYP Platform
Erstellt selbstsignierte SSL-Zertifikate für Entwicklung
"""
import os
import subprocess
from datetime import datetime
from utils.logging_config import get_logger
logger = get_logger("ssl_manager")
class SSLManager:
"""Verwaltet SSL-Zertifikate für die MYP Platform"""
def __init__(self):
self.cert_dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), "certs")
self.cert_path = os.path.join(self.cert_dir, "myp.crt")
self.key_path = os.path.join(self.cert_dir, "myp.key")
def generate_mercedes_certificate(self) -> bool:
"""
Erstellt ein selbstsigniertes SSL-Zertifikat für Mercedes-Benz.
Returns:
bool: True wenn erfolgreich, False bei Fehler
"""
try:
# Stelle sicher, dass das Zertifikatsverzeichnis existiert
os.makedirs(self.cert_dir, exist_ok=True)
# OpenSSL-Befehl für selbstsigniertes Zertifikat
cmd = [
"openssl", "req", "-x509", "-newkey", "rsa:4096",
"-keyout", self.key_path,
"-out", self.cert_path,
"-days", "365",
"-nodes",
"-subj", "/C=DE/ST=Baden-Wuerttemberg/L=Stuttgart/O=Mercedes-Benz Group AG/OU=MYP Development/CN=localhost"
]
# Führe OpenSSL-Befehl aus
result = subprocess.run(cmd, capture_output=True, text=True)
if result.returncode == 0:
logger.info(f"✅ SSL-Zertifikat erfolgreich erstellt: {self.cert_path}")
return True
else:
logger.error(f"❌ Fehler beim Erstellen des SSL-Zertifikats: {result.stderr}")
return False
except FileNotFoundError:
logger.error("❌ OpenSSL nicht gefunden. Bitte OpenSSL installieren.")
return False
except Exception as e:
logger.error(f"❌ Unerwarteter Fehler beim Erstellen des SSL-Zertifikats: {str(e)}")
return False
# Globale Instanz
ssl_manager = SSLManager()