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:
committed by
Torsten (PC)
parent
664f2af346
commit
60352d7932
23
SSL-SETUP.md
23
SSL-SETUP.md
@@ -16,7 +16,14 @@ Dieses Dokument beschreibt, wie Sie SSL/TLS-Zertifikate für den YourPart Daemon
|
||||
# Wählen Sie Option 2
|
||||
```
|
||||
|
||||
### 3. DNS-01 Challenge (für komplexe Setups)
|
||||
### 3. Apache2-Zertifikate verwenden (empfohlen für Ubuntu)
|
||||
```bash
|
||||
./setup-ssl.sh
|
||||
# Wählen Sie Option 4
|
||||
# Verwendet bereits vorhandene Apache2-Zertifikate
|
||||
```
|
||||
|
||||
### 4. DNS-01 Challenge (für komplexe Setups)
|
||||
```bash
|
||||
./setup-ssl-dns.sh
|
||||
# Für Cloudflare, Route53, etc.
|
||||
@@ -24,6 +31,13 @@ Dieses Dokument beschreibt, wie Sie SSL/TLS-Zertifikate für den YourPart Daemon
|
||||
|
||||
## 📋 Voraussetzungen
|
||||
|
||||
### 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)
|
||||
- `/etc/apache2/ssl/apache.crt` (Custom Apache2)
|
||||
|
||||
### Für Let's Encrypt (HTTP-01 Challenge):
|
||||
- Port 80 muss verfügbar sein
|
||||
- Domain `your-part.de` muss auf den Server zeigen
|
||||
@@ -61,11 +75,16 @@ Nach der Zertifikats-Erstellung:
|
||||
|
||||
## 🔄 Automatische Erneuerung
|
||||
|
||||
Let's Encrypt-Zertifikate werden automatisch erneuert:
|
||||
### Let's Encrypt-Zertifikate:
|
||||
- **Cron Job:** Täglich um 2:30 Uhr
|
||||
- **Script:** `/etc/yourpart/renew-ssl.sh`
|
||||
- **Log:** `/var/log/yourpart/ssl-renewal.log`
|
||||
|
||||
### Apache2-Zertifikate:
|
||||
- **Ubuntu Snakeoil:** Automatisch von Apache2 verwaltet
|
||||
- **Let's Encrypt:** Automatische Erneuerung wenn erkannt
|
||||
- **Custom:** Manuelle Verwaltung erforderlich
|
||||
|
||||
## 📁 Dateistruktur
|
||||
|
||||
```
|
||||
|
||||
123
setup-ssl.sh
123
setup-ssl.sh
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user