"Update SSL certificate management scripts and configure SSL for frontend"

This commit is contained in:
2025-05-26 12:27:08 +02:00
parent 7e5a6e7e27
commit 5143e8a753
8 changed files with 12 additions and 1853 deletions

View File

@@ -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 ""

View File

@@ -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 ""