#!/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."