From f8a7022f21b3a50395f9bdb01506000b40b5907e Mon Sep 17 00:00:00 2001 From: nizar Date: Thu, 12 Dec 2024 01:30:28 +0100 Subject: [PATCH] up --- readme | 34 ++++++++++++++++++++++++++++++++++ updater.sh | 45 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 readme create mode 100644 updater.sh diff --git a/readme b/readme new file mode 100644 index 0000000..d69db91 --- /dev/null +++ b/readme @@ -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. diff --git a/updater.sh b/updater.sh new file mode 100644 index 0000000..ac09f7f --- /dev/null +++ b/updater.sh @@ -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!" \ No newline at end of file