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
# 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

View File

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