This commit is contained in:
nizar 2024-12-12 01:30:28 +01:00
commit f8a7022f21
2 changed files with 79 additions and 0 deletions

34
readme Normal file
View File

@ -0,0 +1,34 @@
# Aktualisiierung von SSL-Zertifikaten für Mailcow
Dieses Skript aktualisiert SSL-Zertifikate für einen Mailcow-Server.
## Installation
1. Kopieren Sie das Skript in ein Verzeichnis Ihrer Wahl.
2. Passen Sie die folgenden Variablen an:
- `MAILCOW_SERVER`: Server und Benutzername (z.B. root@localhost)
- `TARGET_DIR`: Zielpfad auf dem Server (z.B. /mailcow-dockerized/data/assets/ssl)
- `SOURCE_CERT`: Pfad zum Original-Zertifikat (z.B. /etc/haproxy/ssl/example_domain.pem)
- `SSH_PASSWORD`: SSH-Passwort des Servers
## Nutzung
Führen Sie das Skript aus:
Das Skript wird folgende Schritte durchführen:
- Extrahieren der privaten Schlüssel und Zertifikate
- Generierung einer Diffie-Hellman-Datei
- Übertragung der Zertifikate auf den Server
- Neustart von Mailcow
## Wichtige Hinweise
- Getestet in Alpine in kombination mit HA-Proxy
- Stellen Sie sicher, dass OpenSSL und OpenSSH installiert sind so wie sshpass.
- Testen Sie das Skript zuerst in einer Entwicklungsumgebung.
- Achten Sie auf die Sicherheit bei der Speicherung von Passwörtern.
## Lizenz
Dieses Skript wird unter der MIT-Lizenz veröffentlicht.

45
updater.sh Normal file
View File

@ -0,0 +1,45 @@
#!/bin/sh
# SCP-Ziel: Mailcow-Server und Zielpfad
MAILCOW_SERVER="root@localhost"
TARGET_DIR="mailcow-dockerized/data/assets/ssl" # Vollständiger Pfad
# Pfad zum Originalzertifikat
SOURCE_CERT="/etc/haproxy/ssl/example_domain.pem"
# SSH-Passwort (ersetze dies durch das tatsächliche Passwort)
SSH_PASSWORD=""
# Temporäre Verzeichnisse für die generierten Dateien
TEMP_DIR="/tmp/certgen"
mkdir -p $TEMP_DIR
# Die private Schlüsseldatei und das öffentliche Zertifikat erstellen
echo "Extrahiere privaten Schlüssel und Zertifikat..."
# Zertifikat extrahieren (privaten Schlüssel)
openssl pkey -in $SOURCE_CERT -out $TEMP_DIR/key.pem
# Zertifikat extrahieren (öffentliches Zertifikat)
openssl x509 -in $SOURCE_CERT -out $TEMP_DIR/cert.pem
# Diffie-Hellman-Datei erstellen, falls sie nicht existiert
if [ ! -f $TEMP_DIR/dhparams.pem ]; then
echo "Generiere dhparams.pem"
openssl dhparam -out $TEMP_DIR/dhparams.pem 2048
fi
# Zertifikate und Schlüssel per SCP auf den Server übertragen
echo "Übertrage Zertifikate auf den Server..."
sshpass -p "$SSH_PASSWORD" scp $TEMP_DIR/cert.pem $MAILCOW_SERVER:$TARGET_DIR/cert.pem
sshpass -p "$SSH_PASSWORD" scp $TEMP_DIR/key.pem $MAILCOW_SERVER:$TARGET_DIR/key.pem
sshpass -p "$SSH_PASSWORD" scp $TEMP_DIR/dhparams.pem $MAILCOW_SERVER:$TARGET_DIR/dhparams.pem
# Mailcow neu starten, damit die Änderungen übernommen werden
echo "Starte Mailcow neu..."
sshpass -p "$SSH_PASSWORD" ssh $MAILCOW_SERVER "cd mailcow-dockerized && docker-compose restart"
# Bereinigen der temporären Dateien
rm -rf $TEMP_DIR
echo "Fertig!"