Erweitere das SSL/TLS Setup-Skript um Unterstützung für Apache2-Zertifikate. Füge eine neue Funktion zum Einrichten und Verlinken von Apache2-Zertifikaten hinzu, einschließlich der Überprüfung auf vorhandene Zertifikate und der automatischen Erneuerung für Let's Encrypt. Aktualisiere die Benutzerführung zur Auswahl von Zertifikatstypen und dokumentiere die neuen Optionen in der SSL-Setup-Dokumentation.

This commit is contained in:
Torsten Schulz (local)
2025-09-03 15:02:30 +02:00
committed by Torsten (PC)
parent 664f2af346
commit 60352d7932
2 changed files with 137 additions and 9 deletions

View File

@@ -39,6 +39,14 @@ LETSENCRYPT_DIR="/etc/letsencrypt/live"
LETSENCRYPT_CERT="$LETSENCRYPT_DIR/your-part.de/fullchain.pem"
LETSENCRYPT_KEY="$LETSENCRYPT_DIR/your-part.de/privkey.pem"
# Apache2 Zertifikate (Ubuntu/Debian)
APACHE2_CERT="/etc/ssl/certs/ssl-cert-snakeoil.pem"
APACHE2_KEY="/etc/ssl/private/ssl-cert-snakeoil.key"
# Apache2 Let's Encrypt Zertifikate
APACHE2_LE_CERT="/etc/letsencrypt/live/your-part.de/fullchain.pem"
APACHE2_LE_KEY="/etc/letsencrypt/live/your-part.de/privkey.pem"
# Prüfe ob OpenSSL installiert ist
if ! command -v openssl &> /dev/null; then
log_error "OpenSSL ist nicht installiert!"
@@ -124,6 +132,91 @@ setup_letsencrypt() {
fi
}
setup_apache2_certificates() {
log_info "Apache2 Zertifikate Setup"
# Prüfe ob Apache2 installiert ist
if ! command -v apache2 &> /dev/null && ! command -v httpd &> /dev/null; then
log_warning "Apache2 ist nicht installiert, aber wir können trotzdem die Zertifikate verwenden"
fi
# Prüfe verschiedene Apache2 Zertifikats-Pfade
APACHE2_CERT_PATHS=(
"/etc/ssl/certs/ssl-cert-snakeoil.pem"
"/etc/ssl/certs/apache-selfsigned.crt"
"/etc/apache2/ssl/apache.crt"
"/etc/httpd/ssl/apache.crt"
"/etc/letsencrypt/live/$(hostname)/fullchain.pem"
"/etc/letsencrypt/live/your-part.de/fullchain.pem"
)
APACHE2_KEY_PATHS=(
"/etc/ssl/private/ssl-cert-snakeoil.key"
"/etc/ssl/private/apache-selfsigned.key"
"/etc/apache2/ssl/apache.key"
"/etc/httpd/ssl/apache.key"
"/etc/letsencrypt/live/$(hostname)/privkey.pem"
"/etc/letsencrypt/live/your-part.de/privkey.pem"
)
# Finde verfügbare Zertifikate
FOUND_CERT=""
FOUND_KEY=""
for cert_path in "${APACHE2_CERT_PATHS[@]}"; do
if [ -f "$cert_path" ]; then
FOUND_CERT="$cert_path"
log_info "Gefundenes Zertifikat: $cert_path"
break
fi
done
for key_path in "${APACHE2_KEY_PATHS[@]}"; do
if [ -f "$key_path" ]; then
FOUND_KEY="$key_path"
log_info "Gefundener Private Key: $key_path"
break
fi
done
if [ -z "$FOUND_CERT" ] || [ -z "$FOUND_KEY" ]; then
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
log_info "$path"
else
log_info "$path"
fi
done
exit 1
fi
# Erstelle Symlinks zu den Apache2-Zertifikaten
log_info "Erstelle Symlinks zu Apache2-Zertifikaten..."
sudo ln -sf "$FOUND_CERT" "$CERT_FILE"
sudo ln -sf "$FOUND_KEY" "$KEY_FILE"
# Setze korrekte Berechtigungen
sudo chown yourpart:yourpart "$CERT_FILE" "$KEY_FILE"
sudo chmod 644 "$CERT_FILE"
sudo chmod 600 "$KEY_FILE"
log_success "Apache2-Zertifikate erfolgreich verlinkt!"
# Zeige Zertifikats-Informationen
log_info "Apache2-Zertifikats-Informationen:"
openssl x509 -in "$CERT_FILE" -text -noout | grep -E "(Subject:|Not Before|Not After|DNS:)"
# Prüfe ob es sich um Let's Encrypt-Zertifikate handelt
if [[ "$FOUND_CERT" == *"letsencrypt"* ]]; then
log_info "Let's Encrypt-Zertifikate erkannt, richte Auto-Renewal ein..."
setup_auto_renewal
else
log_warning "Self-Signed oder andere Zertifikate erkannt - kein Auto-Renewal eingerichtet"
fi
}
setup_auto_renewal() {
log_info "Richte automatische Zertifikats-Erneuerung ein..."
@@ -172,8 +265,9 @@ log_info "Wählen Sie den Zertifikatstyp:"
echo "1) Self-Signed Certificate (für Entwicklung/Testing)"
echo "2) Let's Encrypt Certificate (für Produktion)"
echo "3) Bestehende Let's Encrypt Zertifikate verwenden"
echo "4) Apache2-Zertifikate verwenden (empfohlen für Ubuntu)"
echo ""
read -p "Ihre Wahl (1-3): " -n 1 -r
read -p "Ihre Wahl (1-4): " -n 1 -r
echo ""
case $REPLY in
@@ -189,6 +283,10 @@ case $REPLY in
log_info "Bestehende Let's Encrypt Zertifikate werden verwendet..."
CERT_TYPE="existing-letsencrypt"
;;
4)
log_info "Apache2-Zertifikate werden verwendet..."
CERT_TYPE="apache2"
;;
*)
log_error "Ungültige Auswahl!"
exit 1
@@ -280,6 +378,10 @@ case $CERT_TYPE in
exit 1
fi
;;
"apache2")
setup_apache2_certificates
;;
esac
# Zeige Zertifikats-Informationen
@@ -296,9 +398,16 @@ log_info "3. Verbinde dich mit:"
log_info " wss://your-part.de:4551"
log_info ""
if [ "$CERT_TYPE" = "self-signed" ]; then
log_warning "Hinweis: Dies ist ein Self-Signed Certificate!"
log_warning "Für Produktionsumgebungen verwenden Sie Let's Encrypt (Option 2)."
else
log_success "Let's Encrypt Zertifikat ist produktionsbereit!"
fi
case $CERT_TYPE in
"self-signed")
log_warning "Hinweis: Dies ist ein Self-Signed Certificate!"
log_warning "Für Produktionsumgebungen verwenden Sie Let's Encrypt oder Apache2-Zertifikate."
;;
"apache2")
log_success "Apache2-Zertifikate erfolgreich konfiguriert!"
log_info "Diese Zertifikate werden automatisch von Apache2 verwaltet."
;;
*)
log_success "Let's Encrypt Zertifikat ist produktionsbereit!"
;;
esac