From 89c3873db7e34084293a18e7c84758629d42d8d9 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Wed, 3 Sep 2025 15:08:48 +0200 Subject: [PATCH] =?UTF-8?q?F=C3=BCge=20=C3=9Cberpr=C3=BCfung=20auf=20sudo-?= =?UTF-8?q?Rechte=20im=20SSL-Setup-Skript=20hinzu=20und=20aktualisiere=20d?= =?UTF-8?q?ie=20Pfade=20f=C3=BCr=20Apache2-Zertifikate.=20Priorisiere=20Le?= =?UTF-8?q?t's=20Encrypt-Zertifikate=20und=20f=C3=BCge=20Warnungen=20f?= =?UTF-8?q?=C3=BCr=20Snakeoil-Zertifikate=20hinzu,=20um=20Benutzer=20?= =?UTF-8?q?=C3=BCber=20deren=20Einschr=C3=A4nkungen=20zu=20informieren.=20?= =?UTF-8?q?Aktualisiere=20die=20Dokumentation=20entsprechend.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SSL-SETUP.md | 8 +++++--- setup-ssl.sh | 43 +++++++++++++++++++++++++++++++------------ 2 files changed, 36 insertions(+), 15 deletions(-) diff --git a/SSL-SETUP.md b/SSL-SETUP.md index ff156be..bc3bc0e 100644 --- a/SSL-SETUP.md +++ b/SSL-SETUP.md @@ -21,6 +21,7 @@ Dieses Dokument beschreibt, wie Sie SSL/TLS-Zertifikate für den YourPart Daemon ./setup-ssl.sh # Wählen Sie Option 4 # Verwendet bereits vorhandene Apache2-Zertifikate +# ⚠️ Warnung bei Snakeoil-Zertifikaten (nur für localhost) ``` ### 4. DNS-01 Challenge (für komplexe Setups) @@ -33,10 +34,11 @@ Dieses Dokument beschreibt, wie Sie SSL/TLS-Zertifikate für den YourPart Daemon ### Für Apache2-Zertifikate: - Apache2 installiert oder Zertifikate in Standard-Pfaden -- Unterstützte Pfade: - - `/etc/ssl/certs/ssl-cert-snakeoil.pem` (Ubuntu Standard) - - `/etc/letsencrypt/live/your-part.de/fullchain.pem` (Let's Encrypt) +- Unterstützte Pfade (priorisiert nach Qualität): + - `/etc/letsencrypt/live/your-part.de/fullchain.pem` (Let's Encrypt - empfohlen) + - `/etc/letsencrypt/live/$(hostname)/fullchain.pem` (Let's Encrypt) - `/etc/apache2/ssl/apache.crt` (Custom Apache2) + - `/etc/ssl/certs/ssl-cert-snakeoil.pem` (Ubuntu Standard - nur localhost) ### Für Let's Encrypt (HTTP-01 Challenge): - Port 80 muss verfügbar sein diff --git a/setup-ssl.sh b/setup-ssl.sh index 199da7e..a98234a 100755 --- a/setup-ssl.sh +++ b/setup-ssl.sh @@ -53,6 +53,11 @@ if ! command -v openssl &> /dev/null; then exit 1 fi +# Prüfe ob wir sudo-Rechte haben +if ! sudo -n true 2>/dev/null; then + log_info "Einige Operationen benötigen sudo-Rechte für SSL-Verzeichnisse..." +fi + # Funktionen setup_letsencrypt() { log_info "Let's Encrypt Setup für your-part.de" @@ -140,23 +145,23 @@ setup_apache2_certificates() { log_warning "Apache2 ist nicht installiert, aber wir können trotzdem die Zertifikate verwenden" fi - # Prüfe verschiedene Apache2 Zertifikats-Pfade + # Prüfe verschiedene Apache2 Zertifikats-Pfade (priorisiert nach Qualität) APACHE2_CERT_PATHS=( - "/etc/ssl/certs/ssl-cert-snakeoil.pem" - "/etc/ssl/certs/apache-selfsigned.crt" + "/etc/letsencrypt/live/your-part.de/fullchain.pem" + "/etc/letsencrypt/live/$(hostname)/fullchain.pem" "/etc/apache2/ssl/apache.crt" "/etc/httpd/ssl/apache.crt" - "/etc/letsencrypt/live/$(hostname)/fullchain.pem" - "/etc/letsencrypt/live/your-part.de/fullchain.pem" + "/etc/ssl/certs/apache-selfsigned.crt" + "/etc/ssl/certs/ssl-cert-snakeoil.pem" ) APACHE2_KEY_PATHS=( - "/etc/ssl/private/ssl-cert-snakeoil.key" - "/etc/ssl/private/apache-selfsigned.key" + "/etc/letsencrypt/live/your-part.de/privkey.pem" + "/etc/letsencrypt/live/$(hostname)/privkey.pem" "/etc/apache2/ssl/apache.key" "/etc/httpd/ssl/apache.key" - "/etc/letsencrypt/live/$(hostname)/privkey.pem" - "/etc/letsencrypt/live/your-part.de/privkey.pem" + "/etc/ssl/private/apache-selfsigned.key" + "/etc/ssl/private/ssl-cert-snakeoil.key" ) # Finde verfügbare Zertifikate @@ -164,7 +169,7 @@ setup_apache2_certificates() { FOUND_KEY="" for cert_path in "${APACHE2_CERT_PATHS[@]}"; do - if [ -f "$cert_path" ]; then + if sudo test -f "$cert_path"; then FOUND_CERT="$cert_path" log_info "Gefundenes Zertifikat: $cert_path" break @@ -172,7 +177,7 @@ setup_apache2_certificates() { done for key_path in "${APACHE2_KEY_PATHS[@]}"; do - if [ -f "$key_path" ]; then + if sudo test -f "$key_path"; then FOUND_KEY="$key_path" log_info "Gefundener Private Key: $key_path" break @@ -183,7 +188,7 @@ setup_apache2_certificates() { log_error "Keine Apache2-Zertifikate gefunden!" log_info "Verfügbare Pfade:" for path in "${APACHE2_CERT_PATHS[@]}" "${APACHE2_KEY_PATHS[@]}"; do - if [ -f "$path" ]; then + if sudo test -f "$path"; then log_info " ✓ $path" else log_info " ✗ $path" @@ -192,6 +197,20 @@ setup_apache2_certificates() { exit 1 fi + # Warnung für Snakeoil-Zertifikate + if [[ "$FOUND_CERT" == *"snakeoil"* ]]; then + log_warning "ACHTUNG: Snakeoil-Zertifikat erkannt!" + log_warning "Dieses Zertifikat ist nur für localhost gültig, nicht für your-part.de" + log_warning "Für Produktionsumgebungen sollten Sie Let's Encrypt verwenden" + echo "" + read -p "Möchten Sie trotzdem fortfahren? (y/N): " -n 1 -r + echo "" + if [[ ! $REPLY =~ ^[Yy]$ ]]; then + log_info "Setup abgebrochen. Verwenden Sie Option 2 für Let's Encrypt." + exit 0 + fi + fi + # Erstelle Symlinks zu den Apache2-Zertifikaten log_info "Erstelle Symlinks zu Apache2-Zertifikaten..." sudo ln -sf "$FOUND_CERT" "$CERT_FILE"