#!/bin/bash # SSL/TLS Setup Script für YourPart Daemon # Erstellt oder verwaltet SSL-Zertifikate für WebSocket Secure (WSS) set -e # Farben für Logging RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color log_info() { echo -e "${BLUE}[INFO]${NC} $1" } log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1" } log_warning() { echo -e "${YELLOW}[WARNING]${NC} $1" } log_error() { echo -e "${RED}[ERROR]${NC} $1" } CERT_DIR="/etc/yourpart" CERT_FILE="$CERT_DIR/server.crt" KEY_FILE="$CERT_DIR/server.key" CSR_FILE="$CERT_DIR/server.csr" # Prüfe ob OpenSSL installiert ist if ! command -v openssl &> /dev/null; then log_error "OpenSSL ist nicht installiert!" exit 1 fi log_info "SSL/TLS Setup für YourPart Daemon" # Erstelle Zertifikats-Verzeichnis falls nicht vorhanden if [ ! -d "$CERT_DIR" ]; then log_info "Erstelle Zertifikats-Verzeichnis: $CERT_DIR" sudo mkdir -p "$CERT_DIR" fi # Prüfe ob bereits Zertifikate existieren if [ -f "$CERT_FILE" ] && [ -f "$KEY_FILE" ]; then log_info "Zertifikate existieren bereits" # Prüfe Gültigkeit der Zertifikate if openssl x509 -in "$CERT_FILE" -text -noout &> /dev/null; then log_success "Zertifikat ist gültig" # Zeige Zertifikats-Informationen log_info "Zertifikats-Informationen:" openssl x509 -in "$CERT_FILE" -text -noout | grep -E "(Subject:|Not Before|Not After|DNS:)" read -p "Möchten Sie neue Zertifikate erstellen? (y/N): " -n 1 -r echo if [[ ! $REPLY =~ ^[Yy]$ ]]; then log_info "Zertifikate bleiben unverändert" exit 0 fi else log_warning "Zertifikat ist ungültig, erstelle neue..." fi fi log_info "Erstelle neue SSL-Zertifikate..." # Erstelle Private Key log_info "Erstelle Private Key..." sudo openssl genrsa -out "$KEY_FILE" 2048 sudo chmod 600 "$KEY_FILE" sudo chown yourpart:yourpart "$KEY_FILE" # Erstelle Certificate Signing Request (CSR) log_info "Erstelle Certificate Signing Request..." sudo openssl req -new -key "$KEY_FILE" -out "$CSR_FILE" -subj "/C=DE/ST=Germany/L=Berlin/O=YourPart/OU=IT/CN=your-part.de" # Erstelle Self-Signed Certificate log_info "Erstelle Self-Signed Certificate..." sudo openssl x509 -req -days 365 -in "$CSR_FILE" -signkey "$KEY_FILE" -out "$CERT_FILE" # Setze korrekte Berechtigungen sudo chmod 644 "$CERT_FILE" sudo chown yourpart:yourpart "$CERT_FILE" # Lösche CSR-Datei (nicht mehr benötigt) sudo rm -f "$CSR_FILE" log_success "SSL-Zertifikate erfolgreich erstellt!" # Zeige Zertifikats-Informationen log_info "Zertifikats-Informationen:" openssl x509 -in "$CERT_FILE" -text -noout | grep -E "(Subject:|Not Before|Not After|DNS:)" log_info "" log_info "Nächste Schritte:" log_info "1. Aktiviere SSL in der Konfiguration:" log_info " WEBSOCKET_SSL_ENABLED=true" log_info "2. Starte den Daemon neu:" log_info " sudo systemctl restart yourpart-daemon" log_info "3. Verbinde dich mit:" log_info " wss://your-part.de:4551" log_info "" log_warning "Hinweis: Dies ist ein Self-Signed Certificate!" log_warning "Für Produktionsumgebungen verwenden Sie Zertifikate von einer vertrauenswürdigen CA."