#!/bin/bash # Exit on error set -e # Variablen DOMAIN="iot.heim.lan" REALM="IOT.HEIM.LAN" HOSTNAME="ipa.iot.heim.lan" ADMIN_PASS="AdminPass123" # Anpassen IPA_PASS="IpaPass123" # Anpassen CSR_CONFIG="subca.cfg" CSR_FILE="subca.csr" KEY_FILE="subca.key" SIGNED_CERT="subca.crt" ROOT_CA="rootCA.pem" # Pfad zu Ihrem Root-CA-Zertifikat (XCA exportiert als PEM) ROOT_CA_KEY="rootCA.key" # Pfad zu Ihrem Root-CA-Schlüssel (XCA exportiert als PEM) OPENSSL_CONFIG="/etc/pki/tls/openssl.cnf" # Sub-CA Konfigurationsdatei erstellen echo "Erstelle Sub-CA Konfigurationsdatei..." cat > $CSR_CONFIG << EOF [ req ] default_bits = 4096 prompt = no default_md = sha256 distinguished_name = req_distinguished_name req_extensions = v3_req [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = XX stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = State localityName = Locality Name (eg, city) localityName_default = City organizationName = Organization Name (eg, company) organizationName_default = Organization commonName = Common Name (eg, your name or your server's hostname) commonName_max = 64 [ v3_req ] basicConstraints = CA:TRUE,pathlen:0 keyUsage = keyCertSign, cRLSign EOF # CSR und privaten Schlüssel für die Sub-CA generieren echo "Generiere CSR und privaten Schlüssel für Sub-CA..." openssl req -new -newkey rsa:2048 -nodes -out $CSR_FILE -keyout $KEY_FILE -config $CSR_CONFIG # Ausgabe des CSR für Upload in die Root-CA echo "Der CSR für die Sub-CA wurde erstellt: $CSR_FILE" echo "Laden Sie diesen CSR in Ihre Root-CA hoch, signieren Sie ihn dort und speichern Sie das signierte Zertifikat als $SIGNED_CERT" # Warten, bis das signierte Zertifikat verfügbar ist read -p "Nachdem Sie das Zertifikat signiert und heruntergeladen haben, drücken Sie [Enter]..." # Prüfen, ob das signierte Zertifikat vorhanden ist if [ ! -f "$SIGNED_CERT" ]; then echo "Fehler: Das signierte Zertifikat wurde nicht gefunden: $SIGNED_CERT" exit 1 fi # Sub-CA-Zertifikat in FreeIPA importieren echo "Importiere Sub-CA-Zertifikat in FreeIPA..." sudo ipa-cacert-manage install --certificate $SIGNED_CERT --external-cert-file $ROOT_CA # FreeIPA-Dienste neu starten echo "Starte FreeIPA-Dienste neu..." sudo ipactl restart # Installation der Sub-CA überprüfen echo "Überprüfe Installation der Sub-CA..." sudo ipa-cacert-manage list sudo ipa-cert-show $SIGNED_CERT echo "Subordinate CA erfolgreich eingerichtet!"