Füge Überprüfung auf sudo-Rechte im SSL-Setup-Skript hinzu und aktualisiere die Pfade für Apache2-Zertifikate. Priorisiere Let's Encrypt-Zertifikate und füge Warnungen für Snakeoil-Zertifikate hinzu, um Benutzer über deren Einschränkungen zu informieren. Aktualisiere die Dokumentation entsprechend.

This commit is contained in:
Torsten Schulz (local)
2025-09-03 15:08:48 +02:00
committed by Torsten (PC)
parent 60352d7932
commit 89c3873db7
2 changed files with 36 additions and 15 deletions

View File

@@ -21,6 +21,7 @@ Dieses Dokument beschreibt, wie Sie SSL/TLS-Zertifikate für den YourPart Daemon
./setup-ssl.sh ./setup-ssl.sh
# Wählen Sie Option 4 # Wählen Sie Option 4
# Verwendet bereits vorhandene Apache2-Zertifikate # Verwendet bereits vorhandene Apache2-Zertifikate
# ⚠️ Warnung bei Snakeoil-Zertifikaten (nur für localhost)
``` ```
### 4. DNS-01 Challenge (für komplexe Setups) ### 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: ### Für Apache2-Zertifikate:
- Apache2 installiert oder Zertifikate in Standard-Pfaden - Apache2 installiert oder Zertifikate in Standard-Pfaden
- Unterstützte Pfade: - Unterstützte Pfade (priorisiert nach Qualität):
- `/etc/ssl/certs/ssl-cert-snakeoil.pem` (Ubuntu Standard) - `/etc/letsencrypt/live/your-part.de/fullchain.pem` (Let's Encrypt - empfohlen)
- `/etc/letsencrypt/live/your-part.de/fullchain.pem` (Let's Encrypt) - `/etc/letsencrypt/live/$(hostname)/fullchain.pem` (Let's Encrypt)
- `/etc/apache2/ssl/apache.crt` (Custom Apache2) - `/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): ### Für Let's Encrypt (HTTP-01 Challenge):
- Port 80 muss verfügbar sein - Port 80 muss verfügbar sein

View File

@@ -53,6 +53,11 @@ if ! command -v openssl &> /dev/null; then
exit 1 exit 1
fi 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 # Funktionen
setup_letsencrypt() { setup_letsencrypt() {
log_info "Let's Encrypt Setup für your-part.de" 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" log_warning "Apache2 ist nicht installiert, aber wir können trotzdem die Zertifikate verwenden"
fi fi
# Prüfe verschiedene Apache2 Zertifikats-Pfade # Prüfe verschiedene Apache2 Zertifikats-Pfade (priorisiert nach Qualität)
APACHE2_CERT_PATHS=( APACHE2_CERT_PATHS=(
"/etc/ssl/certs/ssl-cert-snakeoil.pem" "/etc/letsencrypt/live/your-part.de/fullchain.pem"
"/etc/ssl/certs/apache-selfsigned.crt" "/etc/letsencrypt/live/$(hostname)/fullchain.pem"
"/etc/apache2/ssl/apache.crt" "/etc/apache2/ssl/apache.crt"
"/etc/httpd/ssl/apache.crt" "/etc/httpd/ssl/apache.crt"
"/etc/letsencrypt/live/$(hostname)/fullchain.pem" "/etc/ssl/certs/apache-selfsigned.crt"
"/etc/letsencrypt/live/your-part.de/fullchain.pem" "/etc/ssl/certs/ssl-cert-snakeoil.pem"
) )
APACHE2_KEY_PATHS=( APACHE2_KEY_PATHS=(
"/etc/ssl/private/ssl-cert-snakeoil.key" "/etc/letsencrypt/live/your-part.de/privkey.pem"
"/etc/ssl/private/apache-selfsigned.key" "/etc/letsencrypt/live/$(hostname)/privkey.pem"
"/etc/apache2/ssl/apache.key" "/etc/apache2/ssl/apache.key"
"/etc/httpd/ssl/apache.key" "/etc/httpd/ssl/apache.key"
"/etc/letsencrypt/live/$(hostname)/privkey.pem" "/etc/ssl/private/apache-selfsigned.key"
"/etc/letsencrypt/live/your-part.de/privkey.pem" "/etc/ssl/private/ssl-cert-snakeoil.key"
) )
# Finde verfügbare Zertifikate # Finde verfügbare Zertifikate
@@ -164,7 +169,7 @@ setup_apache2_certificates() {
FOUND_KEY="" FOUND_KEY=""
for cert_path in "${APACHE2_CERT_PATHS[@]}"; do for cert_path in "${APACHE2_CERT_PATHS[@]}"; do
if [ -f "$cert_path" ]; then if sudo test -f "$cert_path"; then
FOUND_CERT="$cert_path" FOUND_CERT="$cert_path"
log_info "Gefundenes Zertifikat: $cert_path" log_info "Gefundenes Zertifikat: $cert_path"
break break
@@ -172,7 +177,7 @@ setup_apache2_certificates() {
done done
for key_path in "${APACHE2_KEY_PATHS[@]}"; do for key_path in "${APACHE2_KEY_PATHS[@]}"; do
if [ -f "$key_path" ]; then if sudo test -f "$key_path"; then
FOUND_KEY="$key_path" FOUND_KEY="$key_path"
log_info "Gefundener Private Key: $key_path" log_info "Gefundener Private Key: $key_path"
break break
@@ -183,7 +188,7 @@ setup_apache2_certificates() {
log_error "Keine Apache2-Zertifikate gefunden!" log_error "Keine Apache2-Zertifikate gefunden!"
log_info "Verfügbare Pfade:" log_info "Verfügbare Pfade:"
for path in "${APACHE2_CERT_PATHS[@]}" "${APACHE2_KEY_PATHS[@]}"; do for path in "${APACHE2_CERT_PATHS[@]}" "${APACHE2_KEY_PATHS[@]}"; do
if [ -f "$path" ]; then if sudo test -f "$path"; then
log_info "$path" log_info "$path"
else else
log_info "$path" log_info "$path"
@@ -192,6 +197,20 @@ setup_apache2_certificates() {
exit 1 exit 1
fi 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 # Erstelle Symlinks zu den Apache2-Zertifikaten
log_info "Erstelle Symlinks zu Apache2-Zertifikaten..." log_info "Erstelle Symlinks zu Apache2-Zertifikaten..."
sudo ln -sf "$FOUND_CERT" "$CERT_FILE" sudo ln -sf "$FOUND_CERT" "$CERT_FILE"