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
|
# 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
|
```bash
|
||||||
./setup-ssl-dns.sh
|
./setup-ssl-dns.sh
|
||||||
# Für Cloudflare, Route53, etc.
|
# Für Cloudflare, Route53, etc.
|
||||||
@@ -24,6 +31,13 @@ Dieses Dokument beschreibt, wie Sie SSL/TLS-Zertifikate für den YourPart Daemon
|
|||||||
|
|
||||||
## 📋 Voraussetzungen
|
## 📋 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):
|
### Für Let's Encrypt (HTTP-01 Challenge):
|
||||||
- Port 80 muss verfügbar sein
|
- Port 80 muss verfügbar sein
|
||||||
- Domain `your-part.de` muss auf den Server zeigen
|
- Domain `your-part.de` muss auf den Server zeigen
|
||||||
@@ -61,11 +75,16 @@ Nach der Zertifikats-Erstellung:
|
|||||||
|
|
||||||
## 🔄 Automatische Erneuerung
|
## 🔄 Automatische Erneuerung
|
||||||
|
|
||||||
Let's Encrypt-Zertifikate werden automatisch erneuert:
|
### Let's Encrypt-Zertifikate:
|
||||||
- **Cron Job:** Täglich um 2:30 Uhr
|
- **Cron Job:** Täglich um 2:30 Uhr
|
||||||
- **Script:** `/etc/yourpart/renew-ssl.sh`
|
- **Script:** `/etc/yourpart/renew-ssl.sh`
|
||||||
- **Log:** `/var/log/yourpart/ssl-renewal.log`
|
- **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
|
## 📁 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_CERT="$LETSENCRYPT_DIR/your-part.de/fullchain.pem"
|
||||||
LETSENCRYPT_KEY="$LETSENCRYPT_DIR/your-part.de/privkey.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
|
# Prüfe ob OpenSSL installiert ist
|
||||||
if ! command -v openssl &> /dev/null; then
|
if ! command -v openssl &> /dev/null; then
|
||||||
log_error "OpenSSL ist nicht installiert!"
|
log_error "OpenSSL ist nicht installiert!"
|
||||||
@@ -124,6 +132,91 @@ setup_letsencrypt() {
|
|||||||
fi
|
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() {
|
setup_auto_renewal() {
|
||||||
log_info "Richte automatische Zertifikats-Erneuerung ein..."
|
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 "1) Self-Signed Certificate (für Entwicklung/Testing)"
|
||||||
echo "2) Let's Encrypt Certificate (für Produktion)"
|
echo "2) Let's Encrypt Certificate (für Produktion)"
|
||||||
echo "3) Bestehende Let's Encrypt Zertifikate verwenden"
|
echo "3) Bestehende Let's Encrypt Zertifikate verwenden"
|
||||||
|
echo "4) Apache2-Zertifikate verwenden (empfohlen für Ubuntu)"
|
||||||
echo ""
|
echo ""
|
||||||
read -p "Ihre Wahl (1-3): " -n 1 -r
|
read -p "Ihre Wahl (1-4): " -n 1 -r
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
case $REPLY in
|
case $REPLY in
|
||||||
@@ -189,6 +283,10 @@ case $REPLY in
|
|||||||
log_info "Bestehende Let's Encrypt Zertifikate werden verwendet..."
|
log_info "Bestehende Let's Encrypt Zertifikate werden verwendet..."
|
||||||
CERT_TYPE="existing-letsencrypt"
|
CERT_TYPE="existing-letsencrypt"
|
||||||
;;
|
;;
|
||||||
|
4)
|
||||||
|
log_info "Apache2-Zertifikate werden verwendet..."
|
||||||
|
CERT_TYPE="apache2"
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
log_error "Ungültige Auswahl!"
|
log_error "Ungültige Auswahl!"
|
||||||
exit 1
|
exit 1
|
||||||
@@ -280,6 +378,10 @@ case $CERT_TYPE in
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
"apache2")
|
||||||
|
setup_apache2_certificates
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Zeige Zertifikats-Informationen
|
# Zeige Zertifikats-Informationen
|
||||||
@@ -296,9 +398,16 @@ log_info "3. Verbinde dich mit:"
|
|||||||
log_info " wss://your-part.de:4551"
|
log_info " wss://your-part.de:4551"
|
||||||
log_info ""
|
log_info ""
|
||||||
|
|
||||||
if [ "$CERT_TYPE" = "self-signed" ]; then
|
case $CERT_TYPE in
|
||||||
log_warning "Hinweis: Dies ist ein Self-Signed Certificate!"
|
"self-signed")
|
||||||
log_warning "Für Produktionsumgebungen verwenden Sie Let's Encrypt (Option 2)."
|
log_warning "Hinweis: Dies ist ein Self-Signed Certificate!"
|
||||||
else
|
log_warning "Für Produktionsumgebungen verwenden Sie Let's Encrypt oder Apache2-Zertifikate."
|
||||||
log_success "Let's Encrypt Zertifikat ist produktionsbereit!"
|
;;
|
||||||
fi
|
"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