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