78 lines
2.5 KiB
Bash
Executable File
78 lines
2.5 KiB
Bash
Executable File
#!/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!"
|