Initialer Import der Synology Scripts

This commit is contained in:
root
2026-08-05 08:43:57 +02:00
commit 5e32a7c411
404 changed files with 79932 additions and 0 deletions
+547
View File
@@ -0,0 +1,547 @@
#!/bin/bash
# Variablen
# Konfiguration für den Zugriff auf die Synology DiskStation
SYNOLOGY_HOST="9.99.50.10"
SYNOLOGY_USERNAME="Madzone"
SYNOLOGY_PASSWORD="P@ssw0rd"
SSH_PRIVATE_KEY="$HOME/.ssh/id_rsa_synology"
host=$(nslookup 9.99.50.10)
# Zielpfad für das Full-Chain-Zertifikat
FULLCHAIN_CERT="fullchain.${HOST_FQDN}.crt"
HOST_FQDN=$(hostname -f)
HOST_NORMAL=$(hostname -s)
DOMAIN=$(hostname -d)
REMOTE_DIR="/volume1/HEIMLAN/HEIMLAN"
NFS_MOUNT="/mnt/CSR"
SSH_PRIVATE_KEY="$HOME/.ssh/id_rsa_synology"
TMP="/tmp"
# Name der Zertifikatsdateien
ROOT_CERT="CERT_HEIMLAN_RootCA.crt"
SUBCA_CERT="CERT_HEIMLAN_SubCA.crt"
SERVER_CERT="CERT_${HOST_FQDN}.crt"
# Globale Variablen für das Betriebssystem
OS=""
distro=""
version=""
codename=""
# Globale Variablen für OPENSSL
CSR_DIR="/tmp"
KEY_DIR="/tmp"
SSL_DIR=""
PKI_DIR=""
# Extrahiere OU (Organizational Unit) und O (Organization) und wandele sie in Großbuchstaben um
OU=$(echo "${DOMAIN%%.*}" | tr '[:lower:]' '[:upper:]')
O=$(echo "${DOMAIN#*.}" | tr '[:lower:]' '[:upper:]')
# Read IP address dynamically from active network interface
IP_ADDRESS=$(nmcli -t -f IP4.ADDRESS device show | awk -F: '{split($2,a,"/"); print a[1]; exit}')
echo "IP Address: $IP_ADDRESS"
# GLobale SSH Variablen
KEY_PATH="$HOME/.ssh/id_rsa_synology" # Pfad zum SSH-Schlüssel
NAS_HOME="/var/services/homes/$SYNOLOGY_USERNAME" # Angepasstes Home-Verzeichnis auf der NAS
dnf install sshpass nfs-utils -y
#*********************************************************************
#echo "SSH KEY wird im System implemntiert..."
#sudo ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_synology
#echo "SSH KEY wurde Erfolgreich im System implemntiert"
#echo "SSH Verbindung wird in die .ssh eingetragen...."
#sudo ssh-copy-id -i ~/.ssh/id_rsa_synology.pub ${SYNOLOGY_USERNAME}@${SYNOLOGY_HOST}${SYNOLOGY_PASSWORD}
#echo "SSH Verbindung wurde Erfolgreich in die .ssh eingetragen !!!"
colourmsg(){
echo -e "\033[0;36m$1\033[0m"
}
# Funktion zum Erstellen eines Ordners mit Unterordnern über SSH mit sshpass
create_remote_folders() {
# SSH-Befehl zum Erstellen des Ordners mit Unterordnern mit sshpass
echo sshpass -p $SYNOLOGY_PASSWORD ssh "${SYNOLOGY_USERNAME}@${SYNOLOGY_HOST}" "mkdir -p ${REMOTE_DIR}/${HOST_FQDN}/CSR"
sshpass -p $SYNOLOGY_PASSWORD ssh "${SYNOLOGY_USERNAME}@${SYNOLOGY_HOST}" "mkdir -p ${REMOTE_DIR}/${HOST_FQDN}/CSR"
echo sshpass -p $SYNOLOGY_PASSWORD ssh "${SYNOLOGY_USERNAME}@${SYNOLOGY_HOST}" "mkdir -p ${REMOTE_DIR}/${HOST_FQDN}/CERT"
sshpass -p $SYNOLOGY_PASSWORD ssh "${SYNOLOGY_USERNAME}@${SYNOLOGY_HOST}" "mkdir -p ${REMOTE_DIR}/${HOST_FQDN}/CERT"
echo sshpass -p $SYNOLOGY_PASSWORD ssh "${SYNOLOGY_USERNAME}@${SYNOLOGY_HOST}" "mkdir -p ${REMOTE_DIR}/${HOST_FQDN}/KEY"
sshpass -p $SYNOLOGY_PASSWORD ssh "${SYNOLOGY_USERNAME}@${SYNOLOGY_HOST}" "mkdir -p ${REMOTE_DIR}/${HOST_FQDN}/KEY"
echo "Ordner ${REMOTE_DIR}/$HOST_FQDN/ wurde auf ${host} erstellt."
}
# Funktion zum Erstellen von SSH-Schlüsseln
generate_ssh_key() {
if [ ! -f "$KEY_PATH" ]; then
echo "Erstelle SSH-Schlüssel..."
ssh-keygen -t rsa -b 4096 -N "" -f "$KEY_PATH"
else
echo "SSH-Schlüssel existieren bereits."
fi
}
# Funktion zum Kopieren des öffentlichen Schlüssels zur NAS
copy_ssh_key_to_nas() {
echo "Kopiere den öffentlichen Schlüssel zur NAS..."
#cat ${KEY_PATH}.pub | ssh -o StrictHostKeyChecking=no $SYNOLOGY_USERNAME@$SYNOLOGY_HOST "tee -a $NAS_HOME/.ssh/authorized_keys && chmod 600 $NAS_HOME/.ssh/authorized_keys"
cat ${KEY_PATH}.pub | sshpass -p "$SYNOLOGY_PASSWORD" ssh -o StrictHostKeyChecking=no $SYNOLOGY_USERNAME@$SYNOLOGY_HOST "tee -a $NAS_HOME/.ssh/authorized_keys && chmod 600 $NAS_HOME/.ssh/authorized_keys"
if [ $? -eq 0 ]; then
echo "Öffentlicher Schlüssel erfolgreich zur NAS kopiert."
else
echo "Fehler beim Kopieren des öffentlichen Schlüssels zur NAS."
exit 1
fi
}
# Funktion zum Kopieren der Datei von der NAS zum lokalen Rechner
copy_file_from_nas() {
echo "Kopiere die Datei von der NAS zum lokalen Rechner..."
scp -i "$KEY_PATH" $SYNOLOGY_USERNAME@SYNOLOGY_HOST:$NAS_HOME "$KEY_PATH"
if [ $? -eq 0 ]; then
echo "Datei erfolgreich kopiert."
else
echo "Fehler beim Kopieren der Datei."
exit 1
fi
}
# Funktion zum Ermitteln des Betriebssystems
detect_os() {
echo "Das installierte Derivat wird ermittelt...."
OS=$(uname -s)
case $OS in
Linux*)
# Überprüfen, ob lsb_release verfügbar ist
if command -v lsb_release &> /dev/null; then
# Verwende lsb_release, wenn es verfügbar ist
distro=$(lsb_release -si)
version=$(lsb_release -sr)
codename=$(lsb_release -sc)
else
# Überprüfe /etc/os-release
if [ -f /etc/os-release ]; then
. /etc/os-release
distro=$NAME
version=$VERSION_ID
codename=$VERSION_CODENAME
# Überprüfe /etc/lsb-release
elif [ -f /etc/lsb-release ]; then
. /etc/lsb-release
distro=$DISTRIB_ID
version=$DISTRIB_RELEASE
codename=$DISTRIB_CODENAME
# Überprüfe /etc/debian_version
elif [ -f /etc/debian_version ]; then
distro="Debian"
version=$(cat /etc/debian_version)
codename=$(uname -r)
# Überprüfe /etc/redhat-release
elif [ -f /etc/redhat-release ]; then
distro=$(cat /etc/redhat-release)
version=$(uname -r)
codename=$(uname -r)
else
distro="Unbekannte Distribution"
version="Unbekannte Version"
codename="Unbekannter Codename"
fi
fi
# Ausgabe der ermittelten Informationen
echo "\n\n"
echo "Distribution: $distro"
echo "Version: $version"
echo "Codename: $codename"
echo "\n\n"
;;
*)
echo "Unsupported OS: $OS"
exit 1
;;
esac
echo "${distro} wurde ....... Ausgewählt......."
}
install_requierments(){
echo "Erstellen des Zertifikatsrequests..."
echo " Funktion create_certificate_request() wert der Variable distro: $distro"
case $distro in
Debian|Ubuntu)
echo "" Alle Noetigen Kompomenten werden Installiert....
apt install sudo sshpass nfs-common -y
;;
CentOS)
echo "" Alle Noetigen Kompomenten werden Installiert....
dnf install sudo sshpass nfs-utils -y
;;
"Red Hat Enterprise Linux")
echo "" Alle Noetigen Kompomenten werden Installiert....
dnf install sudo sshpass nfs-utils -y
;;
*)
echo "Das Betriebssystem wird nicht unterstützt für Zertifikatsrequest.";;
esac
}
# Funktion zum Erstellen des Zertifikatsrequests
create_certificate_request() {
echo "Erstellen des Zertifikatsrequests..."
echo " Funktion create_certificate_request() wert der Variable distro: $distro"
case $distro in
Debian|Ubuntu)
apt install sudo sshpass nfs-common -y
# Debian / Ubuntu spezifische Pfade
#KEY_DIR="/etc/ssl/private/"
# Erstellen des privaten Schlüssels
openssl genrsa -out "${KEY_DIR}/KEY_${HOST_FQDN}.pem" 4096
echo "Privater Schlüssel wurde erstellt: private.key"
# CSR erstellen
#CSR_DIR="/tmp"
openssl req -new -key "${KEY_DIR}/KEY_${HOST_FQDN}.pem" -out "${CSR_DIR}/CSR_${HOST_FQDN}.csr" -subj "/C=DE/ST=TH/L=ILM/O=${O}/OU=${OU}/CN=${HOST_FQDN}/emailAddress=admin@$DOMAIN"
echo "Zertifikatsrequest wurde erstellt: request.csr"
# CSR anzeigen
echo "Inhalt des erstellten Zertifikatsrequests: DEBIAN|UBUNTU......."
openssl req -in "${CSR_DIR}/CSR_${HOST_FQDN}.csr" -text -noout
;;
CentOS)
# CentOS spezifische Pfade
#KEY_DIR="/etc/pki/tls/private/"
# Erstellen des privaten Schlüssels
openssl genrsa -out "${KEY_DIR}KEY_${HOST_FQDN}.pem" 4096
echo "Privater Schlüssel wurde erstellt und gespeichert unter: ${KEY_DIR}KEY_${HOST_FQDN}.key"
# CSR erstellen
#CSR_DIR="/tmp"
openssl req -new -key "${KEY_DIR}/KEY_${HOST_FQDN}.pem" -out "${CSR_DIR}/CSR_${HOST_FQDN}.csr" -subj "/C=DE/ST=TH/L=ILM/O=HEIMLAN/OU=HEIMLAN/CN=${HOST_FQDN}/emailAddress=admin@$DOMAIN"
echo "Zertifikatsrequest wurde erstellt und gespeichert unter: ${CSR_DIR}/CSR_${HOST_FQDN}.csr"
# CSR anzeigen
echo "Inhalt des erstellten Zertifikatsrequests: CENTOS....."
openssl req -in "${CSR_DIR}/CSR_${HOST_FQDN}.csr" -text -noout
;;
"Red Hat Enterprise Linux")
# CentOS spezifische Pfade
#KEY_DIR="/etc/pki/tls/private/"
# Erstellen des privaten Schlüssels
openssl genrsa -out "${KEY_DIR}/KEY_${HOST_FQDN}.pem" 4096
echo "Privater Schlüssel wurde erstellt und gespeichert unter: ${KEY_DIR}KEY_${HOST_FQDN}.key"
# CSR erstellen
#CSR_DIR="/tmp"
openssl req -new -key "${KEY_DIR}/KEY_${HOST_FQDN}.pem" -out "${CSR_DIR}/CSR_${HOST_FQDN}.csr" -subj "/C=DE/ST=TH/L=ILM/O=HEIMLAN/OU=HEIMLAN/CN=${HOST_FQDN}/emailAddress=admin@$DOMAIN"
echo "Zertifikatsrequest wurde erstellt und gespeichert unter: ${CSR_DIR}/CSR_${HOST_FQDN}.csr"
# CSR anzeigen
echo "Inhalt des erstellten Zertifikatsrequests: RHEL ....."
openssl req -in "${CSR_DIR}/CSR_${HOST_FQDN}.csr" -text -noout
;;
*)
echo "Das Betriebssystem wird nicht unterstützt für Zertifikatsrequest.";;
esac
}
# Funktion zum Erstellen des SSH-Schlüsselpaars und Hinzufügen zur Synology
setup_ssh_keys() {
echo "=== Einrichten von SSH-Schlüsseln ==="
# Überprüfen, ob der private Schlüssel bereits vorhanden ist
if [ ! -f "${SSH_PRIVATE_KEY}" ]; then
echo "Erstelle SSH-Schlüsselpaar..."
ssh-keygen -t rsa -b 4096 -f "${SSH_PRIVATE_KEY}" -N "" -C "Synology SSH key"
echo "SSH-Schlüsselpaar wurde erstellt: ${SSH_PRIVATE_KEY}"
else
echo "SSH-Schlüsselpaar ist bereits vorhanden: ${SSH_PRIVATE_KEY}"
fi
# SSH-Schlüssel zur Synology hinzufügen
echo "Füge den öffentlichen Schlüssel zur Synology hinzu..."
ssh-copy-id -i "${SSH_PRIVATE_KEY}.pub" "${SYNOLOGY_USER}@${SYNOLOGY_HOST}"
echo "Öffentlicher Schlüssel wurde zur Synology hinzugefügt."
}
# Funktion zum Hochladen des Requests zur Synology
upload_certificate_request() {
echo "Hochladen des Zertifikatsrequests zur Synology..."
# Mounten der NFS-Freigabe mit Benutzername und Passwort
sudo mkdir -p ${NFS_MOUNT}
echo "sudo mkdir $NFS_MOUNT"
#sudo mkdir -p ${NFS_MOUNT}
#sleep 10
#ls /mnt/CSR/
#sudo mount -t nfs -o username="${SYNOLOGY_USER}",password="${SYNOLOGY_PASSWORD}" "${SYNOLOGY_HOST}:${REMOTE_DIR}/$HOST_NORMAL/CSR" "${NFS_MOUNT}"
sudo mount -t nfs -o nfsvers=3 "${SYNOLOGY_HOST}:${REMOTE_DIR}" "${NFS_MOUNT}"
ls -lha /mnt/CSR/
#echo "TEST WARTE ZEIT 30 SEKUNDEN......"
#sleep 30
# Überprüfen, ob das Mount erfolgreich war
if [ $? -eq 0 ]; then
echo "NFS-Freigabe erfolgreich eingebunden: ${NFS_MOUNT}"
# Kopieren der Datei auf die NFS-Freigabe
ls -lha /mnt/CSR/
sleep 5
sudo cp "${CSR_DIR}/CSR_${HOST_FQDN}.csr" "${NFS_MOUNT}/${HOST_FQDN}/CSR/"
sudo cp "${KEY_DIR}/KEY_${HOST_FQDN}.pem" "${NFS_MOUNT}/${HOST_FQDN}/KEY/"
sleep 5
ls -lha /mnt/CSR/
echo "Datei erfolgreich auf die NFS-Freigabe hochgeladen."
#echo "2. TEST WARTE ZEIT 30 SEKUNDEN......"
#sleep 30
else
echo "Fehler beim Einbinden der NFS-Freigabe: ${NFS_MOUNT}"
fi
echo "Zertifikatsrequest wurde zur Synology hochgeladen."
}
umountNFS(){
# NFS-Freigabe wieder aushängen
sudo umount "${NFS_MOUNT}"
cd /mnt
rmdir CSR/
echo "NFS-Freigabe erfolgreich ausgehängt."
}
# Funktion zum Herunterladen von Root-Zertifikat, Sub-CA-Zertifikat und Server-Zertifikat
download_certificates() {
echo "Herunterladen von Root-Zertifikat, Sub-CA-Zertifikat und Server-Zertifikat..."
echo "=== Überprüfen und Herunterladen der Datei von der Synology ==="
# SSH-Befehl, um die Existenz der Datei auf der Synology zu überprüfen
ssh -i "$KEY_PATH" "${SYNOLOGY_USERNAME}@${SYNOLOGY_HOST}" test -f "${REMOTE_DIR}/${HOST_FQDN}/CERT/$SERVER_CERT"
# Prüfen des Rückgabewerts von test (-f) und Entscheidung treffen
if [ $? -eq 0 ]; then
echo "Datei CERT_${HOST_FQDN}.crt auf der Synology gefunden. Beginne mit dem Download..."
cp "${NFS_MOUNT}/${HOST_FQDN}/CERT/$SERVER_CERT" "${TMP}/$SERVER_CERT"
cp "${NFS_MOUNT}/RootCA/$ROOT_CERT" "${TMP}/$ROOT_CERT"
cp "${NFS_MOUNT}/SubCA/$SUBCA_CERT" "${TMP}/$SUBCA_CERT"
echo "Datei erfolgreich heruntergeladen nach ${TMP}"
else
#echo "Datei $SERVER_CERT nicht auf der Synology gefunden. Warte 300 Sekunden..."
#sleep 300
echo "Datei $SERVER_CERT nicht auf der Synology gefunden. Warte 300 Sekunden..."
# Timer mit Countdown anzeigen
for ((i=300; i>0; i--)); do
echo -ne "Noch $i Sekunden warten...\r"
sleep 1
done
echo
download_certificates # Rekursiver Aufruf, um erneut zu prüfen
fi
echo "Zertifikate wurden heruntergeladen."
}
# Funktion zum Erstellen des Full-Chain-Zertifikats und Umbenennen
create_fullchain_certificate() {
echo "Erstellen des Full-Chain-Zertifikats..."
# Zielpfad für das Full-Chain-Zertifikat
FULLCHAIN_CERT="/tmp/fullchain.crt"
# Full-Chain-Zertifikat erstellen
cat "$TMP/$SERVER_CERT" "$TMP/$SUBCA_CERT" "$TMP/$ROOT_CERT" > "$FULLCHAIN_CERT"
echo "Full-Chain-Zertifikat wurde erstellt: $FULLCHAIN_CERT"
# Server-Zertifikat nach Hostnamen benennen
HOSTNAME=$(hostname)
mv "$FULLCHAIN_CERT" "$TMP/fullchain_$HOST_FQDN.crt"
echo "Full-Chain-Zertifikat umbenannt zu fullchain_$HOST_FQDN.crt"
}
# Funktion zum Kopieren der Zertifikate in die richtigen Pfade je nach Derivat und Typ
copy_certificates() {
echo "Kopieren der Zertifikate in die richtigen Pfade..."
case $distro in
Debian|Ubuntu)
# Debian / Ubuntu spezifische Pfade
SSL_DIR="/usr/local/share/ca-certificates/"
KEY_STORE="usr/local/share/ca-certificates/"
# Root-Zertifikat kopieren
cp "$TMP/$ROOT_CERT" "$SSL_DIR/$ROOT_CERT"
# Sub-CA-Zertifikat kopieren
cp "$TMP/$SUBCA_CERT" "$SSL_DIR/$SUBCA_CERT"
# Server-Zertifikat kopieren
cp "$TMP/$SERVER_CERT" "$SSL_DIR/$SERVER_CERT"
# Server Key kopieren
cp "$TMP/KEY_${HOST_FQDN}.pem" "$KEY_STORE/KEY_${HOST_FQDN}.pem"
echo "Zertifikate wurden nach $SSL_DIR kopiert."
update-ca-certificates
;;
CentOS|"Red Hat Enterprise Linux")
# CentOS spezifische Pfade
SSL_DIR="/etc/pki/tls/certs/"
KEY_STORE="etc/pki/tls/private/"
PKI_DIR="/etc/pki/ca-trust/source/anchors/"
# Root-Zertifikat kopieren
cp "$TMP/$ROOT_CERT" "$SSL_DIR/$ROOT_CERT"
cp "$TMP/$ROOT_CERT" "$PKI_DIR/$ROOT_CERT"
# Sub-CA-Zertifikat kopieren
cp "$TMP/$SUBCA_CERT" "$SSL_DIR/$SUBCA_CERT"
cp "$TMP/$SUBCA_CERT" "$PKI_DIR/$SUBCA_CERT"
# Server-Zertifikat kopieren
cp "$TMP/$SERVER_CERT" "$SSL_DIR/$SERVER_CERT"
cp "$TMP/$SERVER_CERT" "$PKI_DIR/$SERVER_CERT"
# Server Key kopieren
cp "$TMP/KEY_${HOST_FQDN}.pem" "$KEY_STORE/KEY_${HOST_FQDN}.pem"
echo "Zertifikate wurden nach $SSL_DIR und nach $PKI_DIR kopiert."
update-ca-trust
;;
*)
echo "Das Betriebssystem $OS wird nicht unterstützt für Zertifikate-Kopieren."
;;
esac
}
# Funktion zum Kopieren der Zertifikate in die richtigen Pfade je nach WebServer Ty
copy_web_certificates() {
echo "Kopieren der Zertifikate in die richtigen Pfade und Aktualisieren der Konfigurationsdateien..."
case $distro in
Debian|Ubuntu)
# Debian / Ubuntu spezifische Pfade
SSL_DIR_APACHE="/etc/ssl/certs/"
SSL_DIR_NGINX="/etc/nginx/ssl/"
# Prüfen, ob Apache installiert ist und den SSL-Pfad anpassen
if [ -f "/etc/apache2/apache2.conf" ]; then
SSL_DIR_APACHE="/etc/apache2/ssl/"
fi
# Prüfen, ob Nginx installiert ist und den SSL-Pfad anpassen
if [ -f "/etc/nginx/nginx.conf" ]; then
SSL_DIR_NGINX="/etc/nginx/ssl/"
fi
# Root-Zertifikat kopieren
cp "$TMP/$ROOT_CERT" "$SSL_DIR_APACHE/$ROOT_CERT"
cp "$TMP/$ROOT_CERT" "$SSL_DIR_NGINX/$ROOT_CERT"
# Sub-CA-Zertifikat kopieren
cp "$TMP/$SUBCA_CERT" "$SSL_DIR_APACHE/$SUBCA_CERT"
cp "$TMP/$SUBCA_CERT" "$SSL_DIR_NGINX/$SUBCA_CERT"
# Server-Zertifikat kopieren
cp "$TMP/$SERVER_CERT" "$SSL_DIR_APACHE/$SERVER_CERT"
cp "$TMP/$SERVER_CERT" "$SSL_DIR_NGINX/$SERVER_CERT"
echo "Zertifikate wurden nach $SSL_DIR_APACHE und $SSL_DIR_NGINX kopiert."
# Aktualisieren der Apache-Konfiguration, falls vorhanden
if [ -f "/etc/apache2/apache2.conf" ]; then
update_apache_config "$SSL_DIR_APACHE/$SERVER_CERT" "$SSL_DIR_APACHE/$SERVER_KEY"
fi
# Aktualisieren der Nginx-Konfiguration, falls vorhanden
if [ -f "/etc/nginx/nginx.conf" ]; then
update_nginx_config "$SSL_DIR_NGINX/$SERVER_CERT" "$SSL_DIR_NGINX/$SERVER_KEY"
fi
;;
CentOS|"Red Hat Enterprise Linux")
# CentOS spezifische Pfade
SSL_DIR_APACHE="/etc/pki/tls/certs/"
SSL_DIR_NGINX="/etc/nginx/ssl/"
# Prüfen, ob Apache installiert ist und den SSL-Pfad anpassen
if [ -f "/etc/httpd/conf/httpd.conf" ]; then
SSL_DIR_APACHE="/etc/httpd/ssl/"
fi
# Prüfen, ob Nginx installiert ist und den SSL-Pfad anpassen
if [ -f "/etc/nginx/nginx.conf" ]; then
SSL_DIR_NGINX="/etc/nginx/ssl/"
fi
# Root-Zertifikat kopieren
cp "$TMP/$ROOT_CERT" "$SSL_DIR_APACHE/$ROOT_CERT"
cp "$TMP/$ROOT_CERT" "$SSL_DIR_NGINX/$ROOT_CERT"
# Sub-CA-Zertifikat kopieren
cp "$TMP/$SUBCA_CERT" "$SSL_DIR_APACHE/$SUBCA_CERT"
cp "$TMP/$SUBCA_CERT" "$SSL_DIR_NGINX/$SUBCA_CERT"
# Server-Zertifikat kopieren
cp "$TMP/$SERVER_CERT" "$SSL_DIR_APACHE/$SERVER_CERT"
cp "$TMP/$SERVER_CERT" "$SSL_DIR_NGINX/$SERVER_CERT"
echo "Zertifikate wurden nach $SSL_DIR_APACHE und $SSL_DIR_NGINX kopiert."
# Aktualisieren der Apache-Konfiguration, falls vorhanden
if [ -f "/etc/httpd/conf/httpd.conf" ]; then
update_apache_config "$SSL_DIR_APACHE/$SERVER_CERT" "$SSL_DIR_APACHE/$SERVER_KEY"
fi
# Aktualisieren der Nginx-Konfiguration, falls vorhanden
if [ -f "/etc/nginx/nginx.conf" ]; then
update_nginx_config "$SSL_DIR_NGINX/$SERVER_CERT" "$SSL_DIR_NGINX/$SERVER_KEY"
fi
;;
*)
echo "Es ist kein WEbServer auf diesen System Installiert"
;;
esac
}
# Funktion zum Aktualisieren der Apache-Konfiguration
update_apache_config() {
local cert_file="$1"
local key_file="$2"
echo "Aktualisiere Apache-Konfiguration für SSL-Zertifikate..."
# Konfigurationsdatei für SSL-Zertifikate finden und bearbeiten
local apache_config_file=$(find /etc/apache2 -name "ssl.conf" -o -name "httpd.conf" 2>/dev/null | head -1)
if [ -n "$apache_config_file" ]; then
# SSLCertificateFile aktualisieren
sed -i "s|^\( *SSLCertificateFile *\).*|\1$cert_file|" "$apache_config_file"
# SSLCertificateKeyFile aktualisieren
sed -i "s|^\( *SSLCertificateKeyFile *\).*|\1$key_file|" "$apache_config_file"
echo "Apache-Konfiguration aktualisiert."
else
echo "Apache-Konfigurationsdatei nicht gefunden oder nicht aktualisiert."
fi
}
# Funktion zum Aktualisieren der Nginx-Konfiguration
update_nginx_config() {
local cert_file="$1"
local key_file="$2"
echo "Aktualisiere Nginx-Konfiguration für SSL-Zertifikate..."
# Konfigurationsdatei für SSL-Zertifikate finden und bearbeiten
local nginx_config_file="/etc/nginx/nginx.conf"
if [ -f "$nginx_config_file" ]; then
# SSL Zertifikat und Key aktualisieren
sed -i "s|^\( *ssl_certificate *\).*|\1$cert_file;|" "$nginx_config_file"
sed -i "s|^\( *ssl_certificate_key *\).*|\1$key_file;|" "$nginx_config_file"
echo "Nginx-Konfiguration aktualisiert."
else
echo "Nginx-Konfigurationsdatei nicht gefunden oder nicht aktualisiert."
fi
}
# Funktion zum Ermitteln des installierten Webserver-Dienstes
detect_webserver() {
if [ -f "/etc/apache2/apache2.conf" ]; then
echo "Apache Webserver ist installiert."
fi
if [ -f "/etc/httpd/conf/httpd.conf" ]; then
echo "Apache Webserver ist installiert."
fi
if [ -f "/etc/nginx/nginx.conf" ]; then
echo "Nginx Webserver ist installiert."
fi
}
echo
# Hauptprogramm
detect_os
install_requierments
generate_ssh_key
copy_ssh_key_to_nas
create_certificate_request
create_remote_folders
#Wird nicht genutz
#setup_ssh_keys
upload_certificate_request
download_certificates
create_fullchain_certificate
copy_certificates
# Funktionen fue WebServer Zertifiakte
detect_webserver
copy_web_certificates
#umountNFS
echo "Prozess abgeschlossen."