Neue Skripte hinzugefügt
This commit is contained in:
Executable
+541
@@ -0,0 +1,541 @@
|
||||
#!/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/"
|
||||
# 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"
|
||||
echo "Zertifikate wurden nach $SSL_DIR kopiert."
|
||||
update-ca-certificates
|
||||
;;
|
||||
CentOS|"Red Hat Enterprise Linux")
|
||||
# CentOS spezifische Pfade
|
||||
SSL_DIR="/etc/pki/tls/certs/"
|
||||
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"
|
||||
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."
|
||||
Reference in New Issue
Block a user