diff --git a/non_graf_installer/certificates/generate_mtls_certs.sh b/non_graf_installer/certificates/generate_mtls_certs.sh new file mode 100644 index 0000000..223b6c7 --- /dev/null +++ b/non_graf_installer/certificates/generate_mtls_certs.sh @@ -0,0 +1,109 @@ +#!/bin/bash + +set -e + +# === 0. Preguntar por el hostname real === +read -rp "🖥️ Introduce el nombre DNS real del servidor (ej: opengnsys-server.local.es): " REAL_HOSTNAME + +if [[ -z "$REAL_HOSTNAME" ]]; then + echo "❌ El nombre del host no puede estar vacío" + exit 1 +fi + +BASE_DIR="mtls-certs" +mkdir -p "$BASE_DIR/ca" + +# === 1. Crear CA si no existe === +if [ ! -f "$BASE_DIR/ca/ca.crt" ]; then + openssl genrsa -out "$BASE_DIR/ca/ca.key" 4096 + openssl req -x509 -new -nodes -key "$BASE_DIR/ca/ca.key" -sha256 -days 3650 \ + -out "$BASE_DIR/ca/ca.crt" \ + -subj "/C=ES/ST=Madrid/L=Madrid/O=Opengnsys/OU=CA/CN=opengnsys-ca" +fi + +# === 2. Servicios y puertos === +declare -A services=( + ["ogcore"]=8443 + ["ogrepo"]=8006 + ["ogboot"]=8081 + ["ogdhcp"]=8082 + ["ogagent"]=8000 +) + +# === 3. Crear certificados por servicio === +for service in "${!services[@]}"; do + port="${services[$service]}" + echo "🔧 Generando certificado para $service (puerto $port)..." + + read -rp "🌐 Introduce la IP del servicio $service: " SERVICE_IP + if [[ -z "$SERVICE_IP" ]]; then + echo "❌ La IP no puede estar vacía" + exit 1 + fi + + DIR="$BASE_DIR/$service" + mkdir -p "$DIR" + + openssl genrsa -out "$DIR/$service.key" 2048 + + openssl req -new -key "$DIR/$service.key" -out "$DIR/$service.csr" \ + -subj "/C=ES/ST=Madrid/L=Madrid/O=Opengnsys/OU=$service/CN=$service.local" + + # Archivo de extensión para SAN + cat > "$DIR/$service.ext" < "$CLIENT_DIR/cliente.ext" <