60 lines
2.1 KiB
Python
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() |