"Update SSL certificate management scripts and configure SSL for frontend"
This commit is contained in:
parent
7e5a6e7e27
commit
5143e8a753
@ -1881,8 +1881,8 @@ def copy_ssl_to_raspberry():
|
|||||||
# Parameter aus Request extrahieren
|
# Parameter aus Request extrahieren
|
||||||
data = request.json or {}
|
data = request.json or {}
|
||||||
host = data.get("host", "raspberrypi")
|
host = data.get("host", "raspberrypi")
|
||||||
user = data.get("user", "pi")
|
user = data.get("user", "user")
|
||||||
dest = data.get("dest", "/home/pi/myp/ssl")
|
dest = data.get("dest", "/home/user/Projektarbeit-MYP/backend/app/certs")
|
||||||
|
|
||||||
success = ssl_manager.copy_to_raspberry(host, user, dest)
|
success = ssl_manager.copy_to_raspberry(host, user, dest)
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ def get_env_variable(name: str, default: str = None) -> str:
|
|||||||
|
|
||||||
# Hardcodierte Konfiguration
|
# Hardcodierte Konfiguration
|
||||||
SECRET_KEY = "7445630171969DFAC92C53CEC92E67A9CB2E00B3CB2F"
|
SECRET_KEY = "7445630171969DFAC92C53CEC92E67A9CB2E00B3CB2F"
|
||||||
DATABASE_PATH = "C:/Users/TTOMCZA.EMEA/Dev/Projektarbeit-MYP/backend/app/database/myp.db"
|
DATABASE_PATH = "/home/user/Projektarbeit-MYP/backend/app/database/myp.db"
|
||||||
TAPO_USERNAME = "till.tomczak@mercedes-benz.com"
|
TAPO_USERNAME = "till.tomczak@mercedes-benz.com"
|
||||||
TAPO_PASSWORD = "744563017196A"
|
TAPO_PASSWORD = "744563017196A"
|
||||||
|
|
||||||
@ -32,7 +32,7 @@ PRINTERS = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Logging-Konfiguration
|
# Logging-Konfiguration
|
||||||
LOG_DIR = "C:/Users/TTOMCZA.EMEA/Dev/Projektarbeit-MYP/backend/app/logs"
|
LOG_DIR = "/home/user/Projektarbeit-MYP/backend/app/logs"
|
||||||
LOG_SUBDIRS = ["app", "scheduler", "auth", "jobs", "printers", "errors"]
|
LOG_SUBDIRS = ["app", "scheduler", "auth", "jobs", "printers", "errors"]
|
||||||
LOG_LEVEL = "INFO"
|
LOG_LEVEL = "INFO"
|
||||||
LOG_FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
LOG_FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
||||||
@ -47,8 +47,8 @@ SESSION_LIFETIME = timedelta(days=7)
|
|||||||
|
|
||||||
# SSL-Konfiguration
|
# SSL-Konfiguration
|
||||||
SSL_ENABLED = get_env_variable("MYP_SSL_ENABLED", "True").lower() in ("true", "1", "yes")
|
SSL_ENABLED = get_env_variable("MYP_SSL_ENABLED", "True").lower() in ("true", "1", "yes")
|
||||||
SSL_CERT_PATH = "C:/Users/TTOMCZA.EMEA/Dev/Projektarbeit-MYP/backend/certs/myp.crt"
|
SSL_CERT_PATH = "/home/user/Projektarbeit-MYP/backend/certs/myp.crt"
|
||||||
SSL_KEY_PATH = "C:/Users/TTOMCZA.EMEA/Dev/Projektarbeit-MYP/backend/certs/myp.key"
|
SSL_KEY_PATH = "/home/user/Projektarbeit-MYP/backend/certs/myp.key"
|
||||||
SSL_HOSTNAME = get_env_variable("MYP_SSL_HOSTNAME", "raspberrypi")
|
SSL_HOSTNAME = get_env_variable("MYP_SSL_HOSTNAME", "raspberrypi")
|
||||||
|
|
||||||
# Scheduler-Konfiguration
|
# Scheduler-Konfiguration
|
||||||
|
@ -86,8 +86,8 @@ if __name__ == "__main__":
|
|||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(description="Erstellt selbstsignierte SSL-Zertifikate für die lokale Entwicklung")
|
parser = argparse.ArgumentParser(description="Erstellt selbstsignierte SSL-Zertifikate für die lokale Entwicklung")
|
||||||
parser.add_argument("-c", "--cert", default="../certs/myp.crt", help="Pfad zur Zertifikatsdatei")
|
parser.add_argument("-c", "--cert", default="/home/user/Projektarbeit-MYP/backend/app/certs/myp.crt", help="Pfad zur Zertifikatsdatei")
|
||||||
parser.add_argument("-k", "--key", default="../certs/myp.key", help="Pfad zur Schlüsseldatei")
|
parser.add_argument("-k", "--key", default="/home/user/Projektarbeit-MYP/backend/app/certs/myp.key", help="Pfad zur Schlüsseldatei")
|
||||||
parser.add_argument("-n", "--hostname", default="localhost", help="Hostname für das Zertifikat")
|
parser.add_argument("-n", "--hostname", default="localhost", help="Hostname für das Zertifikat")
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
@ -37,7 +37,7 @@ class SSLCertificateManager:
|
|||||||
|
|
||||||
# Verzeichnisse definieren
|
# Verzeichnisse definieren
|
||||||
self.certs_dir = os.path.dirname(self.cert_path)
|
self.certs_dir = os.path.dirname(self.cert_path)
|
||||||
self.frontend_ssl_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(self.certs_dir))), "frontend", "ssl")
|
self.frontend_ssl_dir = "/home/user/Projektarbeit-MYP/frontend/ssl"
|
||||||
|
|
||||||
# Mercedes-Benz spezifische Konfiguration
|
# Mercedes-Benz spezifische Konfiguration
|
||||||
self.mercedes_config = {
|
self.mercedes_config = {
|
||||||
@ -263,7 +263,7 @@ class SSLCertificateManager:
|
|||||||
ssl_logger.error(f"Unerwarteter Fehler bei der Zertifikatsinstallation: {e}")
|
ssl_logger.error(f"Unerwarteter Fehler bei der Zertifikatsinstallation: {e}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def copy_to_raspberry(self, host: str = "raspberrypi", user: str = "pi", dest: str = "/home/pi/myp/ssl") -> bool:
|
def copy_to_raspberry(self, host: str = "raspberrypi", user: str = "user", dest: str = "/home/user/Projektarbeit-MYP/backend/app/certs") -> bool:
|
||||||
"""
|
"""
|
||||||
Kopiert das Zertifikat auf den Raspberry Pi
|
Kopiert das Zertifikat auf den Raspberry Pi
|
||||||
|
|
||||||
|
@ -1,160 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# MYP V2 - SSL-Zertifikat-Generator
|
|
||||||
# Erstellt selbstsignierte Zertifikate für die HTTPS-Kommunikation
|
|
||||||
|
|
||||||
# Fehlerabbruch aktivieren
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# Farben für bessere Lesbarkeit
|
|
||||||
RED='\033[0;31m'
|
|
||||||
GREEN='\033[0;32m'
|
|
||||||
YELLOW='\033[0;33m'
|
|
||||||
BLUE='\033[0;34m'
|
|
||||||
NC='\033[0m' # No Color
|
|
||||||
|
|
||||||
# Funktion für Titel
|
|
||||||
print_header() {
|
|
||||||
echo -e "${BLUE}================================================================${NC}"
|
|
||||||
echo -e "${BLUE} MYP V2 - SSL-Zertifikat-Generator ${NC}"
|
|
||||||
echo -e "${BLUE}================================================================${NC}"
|
|
||||||
echo ""
|
|
||||||
}
|
|
||||||
|
|
||||||
# Standardwerte
|
|
||||||
CERT_DIR="/opt/myp/ssl"
|
|
||||||
CERT_FILE="$CERT_DIR/myp.crt"
|
|
||||||
KEY_FILE="$CERT_DIR/myp.key"
|
|
||||||
DAYS_VALID=3650 # 10 Jahre
|
|
||||||
HOSTNAME=$(hostname -f)
|
|
||||||
IP_ADDRESS=$(hostname -I | awk '{print $1}')
|
|
||||||
|
|
||||||
# Hilfe-Funktion
|
|
||||||
show_help() {
|
|
||||||
echo "Verwendung: $0 [Optionen]"
|
|
||||||
echo ""
|
|
||||||
echo "Optionen:"
|
|
||||||
echo " -d, --dir DIR Verzeichnis für Zertifikate (Standard: $CERT_DIR)"
|
|
||||||
echo " -c, --cert DATEI Pfad zur Zertifikatsdatei (Standard: $CERT_FILE)"
|
|
||||||
echo " -k, --key DATEI Pfad zur Schlüsseldatei (Standard: $KEY_FILE)"
|
|
||||||
echo " -h, --hostname NAME Hostname für das Zertifikat (Standard: $HOSTNAME)"
|
|
||||||
echo " -i, --ip IP IP-Adresse für das Zertifikat (Standard: $IP_ADDRESS)"
|
|
||||||
echo " -v, --valid TAGE Gültigkeitsdauer in Tagen (Standard: $DAYS_VALID)"
|
|
||||||
echo " --help Diese Hilfe anzeigen"
|
|
||||||
echo ""
|
|
||||||
}
|
|
||||||
|
|
||||||
# Argumente verarbeiten
|
|
||||||
while [[ $# -gt 0 ]]; do
|
|
||||||
case $1 in
|
|
||||||
-d|--dir)
|
|
||||||
CERT_DIR="$2"
|
|
||||||
shift 2
|
|
||||||
;;
|
|
||||||
-c|--cert)
|
|
||||||
CERT_FILE="$2"
|
|
||||||
shift 2
|
|
||||||
;;
|
|
||||||
-k|--key)
|
|
||||||
KEY_FILE="$2"
|
|
||||||
shift 2
|
|
||||||
;;
|
|
||||||
-h|--hostname)
|
|
||||||
HOSTNAME="$2"
|
|
||||||
shift 2
|
|
||||||
;;
|
|
||||||
-i|--ip)
|
|
||||||
IP_ADDRESS="$2"
|
|
||||||
shift 2
|
|
||||||
;;
|
|
||||||
-v|--valid)
|
|
||||||
DAYS_VALID="$2"
|
|
||||||
shift 2
|
|
||||||
;;
|
|
||||||
--help)
|
|
||||||
show_help
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo -e "${RED}Unbekannte Option: $1${NC}"
|
|
||||||
show_help
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
# Header anzeigen
|
|
||||||
print_header
|
|
||||||
|
|
||||||
# Verzeichnis erstellen, falls es nicht existiert
|
|
||||||
if [ ! -d "$CERT_DIR" ]; then
|
|
||||||
echo -e "${YELLOW}Erstelle Verzeichnis $CERT_DIR...${NC}"
|
|
||||||
mkdir -p "$CERT_DIR"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Überprüfen, ob openssl installiert ist
|
|
||||||
if ! command -v openssl &> /dev/null; then
|
|
||||||
echo -e "${RED}OpenSSL ist nicht installiert!${NC}"
|
|
||||||
echo -e "${YELLOW}Installiere OpenSSL...${NC}"
|
|
||||||
apt-get update && apt-get install -y openssl
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Zertifikat erstellen
|
|
||||||
echo -e "${GREEN}Erstelle selbstsigniertes SSL-Zertifikat...${NC}"
|
|
||||||
echo -e "${BLUE}Hostname: ${NC}$HOSTNAME"
|
|
||||||
echo -e "${BLUE}IP-Adresse: ${NC}$IP_ADDRESS"
|
|
||||||
echo -e "${BLUE}Gültigkeitsdauer: ${NC}$DAYS_VALID Tage"
|
|
||||||
echo -e "${BLUE}Zertifikatsdatei: ${NC}$CERT_FILE"
|
|
||||||
echo -e "${BLUE}Schlüsseldatei: ${NC}$KEY_FILE"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
# OpenSSL-Konfiguration erstellen
|
|
||||||
CONFIG_FILE="$CERT_DIR/openssl.cnf"
|
|
||||||
cat > "$CONFIG_FILE" << EOF
|
|
||||||
[req]
|
|
||||||
default_bits = 2048
|
|
||||||
prompt = no
|
|
||||||
default_md = sha256
|
|
||||||
distinguished_name = req_distinguished_name
|
|
||||||
x509_extensions = v3_req
|
|
||||||
|
|
||||||
[req_distinguished_name]
|
|
||||||
C = DE
|
|
||||||
ST = Baden-Wuerttemberg
|
|
||||||
L = Stuttgart
|
|
||||||
O = Mercedes-Benz AG
|
|
||||||
OU = MYP Platform
|
|
||||||
CN = $HOSTNAME
|
|
||||||
|
|
||||||
[v3_req]
|
|
||||||
keyUsage = critical, digitalSignature, keyAgreement
|
|
||||||
extendedKeyUsage = serverAuth
|
|
||||||
subjectAltName = @alt_names
|
|
||||||
|
|
||||||
[alt_names]
|
|
||||||
DNS.1 = $HOSTNAME
|
|
||||||
DNS.2 = localhost
|
|
||||||
IP.1 = $IP_ADDRESS
|
|
||||||
IP.2 = 127.0.0.1
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Schlüssel und Zertifikat generieren
|
|
||||||
openssl req -x509 -nodes -days "$DAYS_VALID" -newkey rsa:2048 \
|
|
||||||
-keyout "$KEY_FILE" -out "$CERT_FILE" \
|
|
||||||
-config "$CONFIG_FILE"
|
|
||||||
|
|
||||||
# Berechtigungen setzen
|
|
||||||
chmod 600 "$KEY_FILE"
|
|
||||||
chmod 644 "$CERT_FILE"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo -e "${GREEN}SSL-Zertifikat erfolgreich erstellt!${NC}"
|
|
||||||
echo -e "${YELLOW}Fingerprint:${NC}"
|
|
||||||
openssl x509 -noout -fingerprint -sha256 -in "$CERT_FILE"
|
|
||||||
echo ""
|
|
||||||
echo -e "${BLUE}Um diese Zertifikate mit Flask zu verwenden:${NC}"
|
|
||||||
echo " 1. Importiere die SSL-Einstellungen in der app.py"
|
|
||||||
echo " 2. Starte Flask mit SSL-Unterstützung"
|
|
||||||
echo ""
|
|
||||||
echo -e "${YELLOW}Beispiel:${NC}"
|
|
||||||
echo " app.run(host='0.0.0.0', port=5000, ssl_context=('$CERT_FILE', '$KEY_FILE'))"
|
|
||||||
echo ""
|
|
@ -1,99 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# MYP SSL-Zertifikat-Prüfskript
|
|
||||||
# Prüft den Status der SSL-Zertifikate und gibt Informationen aus
|
|
||||||
|
|
||||||
# Fehlerabbruch aktivieren
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# Farben für bessere Lesbarkeit
|
|
||||||
RED='\033[0;31m'
|
|
||||||
GREEN='\033[0;32m'
|
|
||||||
YELLOW='\033[0;33m'
|
|
||||||
BLUE='\033[0;34m'
|
|
||||||
NC='\033[0m' # No Color
|
|
||||||
|
|
||||||
# Standardwerte
|
|
||||||
CERT_PATH="/opt/myp/ssl/myp.crt"
|
|
||||||
KEY_PATH="/opt/myp/ssl/myp.key"
|
|
||||||
|
|
||||||
# Argumente verarbeiten
|
|
||||||
while [[ $# -gt 0 ]]; do
|
|
||||||
case $1 in
|
|
||||||
-c|--cert)
|
|
||||||
CERT_PATH="$2"
|
|
||||||
shift 2
|
|
||||||
;;
|
|
||||||
-k|--key)
|
|
||||||
KEY_PATH="$2"
|
|
||||||
shift 2
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo -e "${RED}Unbekannte Option: $1${NC}"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
# Header anzeigen
|
|
||||||
echo -e "${BLUE}================================================================${NC}"
|
|
||||||
echo -e "${BLUE} MYP V2 - SSL-Zertifikat-Statusprüfung ${NC}"
|
|
||||||
echo -e "${BLUE}================================================================${NC}"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
# Prüfen, ob OpenSSL installiert ist
|
|
||||||
if ! command -v openssl &> /dev/null; then
|
|
||||||
echo -e "${RED}OpenSSL ist nicht installiert!${NC}"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Prüfen, ob Zertifikat existiert
|
|
||||||
if [ ! -f "$CERT_PATH" ]; then
|
|
||||||
echo -e "${RED}Zertifikat nicht gefunden: $CERT_PATH${NC}"
|
|
||||||
echo -e "${YELLOW}Führen Sie 'create_ssl_cert.sh' aus, um ein neues Zertifikat zu erstellen.${NC}"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Prüfen, ob Schlüssel existiert
|
|
||||||
if [ ! -f "$KEY_PATH" ]; then
|
|
||||||
echo -e "${RED}Schlüssel nicht gefunden: $KEY_PATH${NC}"
|
|
||||||
echo -e "${YELLOW}Führen Sie 'create_ssl_cert.sh' aus, um einen neuen Schlüssel zu erstellen.${NC}"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Zertifikatsinformationen anzeigen
|
|
||||||
echo -e "${GREEN}Zertifikatsinformationen:${NC}"
|
|
||||||
echo -e "${BLUE}Zertifikatsdatei: ${NC}$CERT_PATH"
|
|
||||||
echo -e "${BLUE}Schlüsseldatei: ${NC}$KEY_PATH"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
# Zertifikatsdetails anzeigen
|
|
||||||
echo -e "${YELLOW}Zertifikatsdetails:${NC}"
|
|
||||||
openssl x509 -in "$CERT_PATH" -noout -subject -issuer -dates -fingerprint -sha256
|
|
||||||
|
|
||||||
# Gültigkeit prüfen
|
|
||||||
echo ""
|
|
||||||
echo -e "${YELLOW}Gültigkeitsprüfung:${NC}"
|
|
||||||
not_after=$(openssl x509 -in "$CERT_PATH" -noout -enddate | cut -d= -f2)
|
|
||||||
not_after_seconds=$(date -d "$not_after" +%s)
|
|
||||||
now_seconds=$(date +%s)
|
|
||||||
days_left=$(( (not_after_seconds - now_seconds) / 86400 ))
|
|
||||||
|
|
||||||
if [ $days_left -le 0 ]; then
|
|
||||||
echo -e "${RED}Zertifikat ist ABGELAUFEN!${NC}"
|
|
||||||
elif [ $days_left -le 30 ]; then
|
|
||||||
echo -e "${YELLOW}Zertifikat läuft in $days_left Tagen ab!${NC}"
|
|
||||||
else
|
|
||||||
echo -e "${GREEN}Zertifikat ist noch $days_left Tage gültig.${NC}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Zertifikatsinhalte prüfen
|
|
||||||
echo ""
|
|
||||||
echo -e "${YELLOW}Zertifikatsinhalte:${NC}"
|
|
||||||
echo -e "${BLUE}Alternative Namen (SAN):${NC}"
|
|
||||||
openssl x509 -in "$CERT_PATH" -noout -text | grep -A1 "Subject Alternative Name"
|
|
||||||
|
|
||||||
# Abschluss
|
|
||||||
echo ""
|
|
||||||
echo -e "${GREEN}SSL-Prüfung abgeschlossen.${NC}"
|
|
||||||
echo -e "${BLUE}Um die Zertifikate zu erneuern, führen Sie 'create_ssl_cert.sh' aus.${NC}"
|
|
||||||
echo ""
|
|
1582
backend/setup_myp.sh
1582
backend/setup_myp.sh
File diff suppressed because it is too large
Load Diff
@ -28,8 +28,8 @@ if (!fs.existsSync(path.join(SSL_DIR, 'myp.crt')) || !fs.existsSync(path.join(SS
|
|||||||
console.log('SSL-Zertifikate nicht gefunden. Prüfe Backend-Verzeichnis...');
|
console.log('SSL-Zertifikate nicht gefunden. Prüfe Backend-Verzeichnis...');
|
||||||
|
|
||||||
// Versuche, die Zertifikate aus dem Backend zu kopieren
|
// Versuche, die Zertifikate aus dem Backend zu kopieren
|
||||||
const backendCertPath = path.join('..', 'backend', 'certs', 'myp.crt');
|
const backendCertPath = path.join('/home/user/Projektarbeit-MYP/backend/certs/myp.crt');
|
||||||
const backendKeyPath = path.join('..', 'backend', 'certs', 'myp.key');
|
const backendKeyPath = path.join('/home/user/Projektarbeit-MYP/backend/certs/myp.key');
|
||||||
|
|
||||||
if (fs.existsSync(backendCertPath) && fs.existsSync(backendKeyPath)) {
|
if (fs.existsSync(backendCertPath) && fs.existsSync(backendKeyPath)) {
|
||||||
console.log('Zertifikate im Backend-Verzeichnis gefunden. Kopiere...');
|
console.log('Zertifikate im Backend-Verzeichnis gefunden. Kopiere...');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user