#!/usr/bin/env bash # Generate TLS certificates for PostgreSQL and Redis # Self-signed certificates for internal cluster use set -e TLS_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" CA_DIR="$TLS_DIR/ca" POSTGRES_DIR="$TLS_DIR/postgres" REDIS_DIR="$TLS_DIR/redis" echo "Generating TLS certificates for Bakery IA..." echo "Directory: $TLS_DIR" echo "" # Clean up old certificates echo "Cleaning up old certificates..." rm -rf "$CA_DIR"/* "$POSTGRES_DIR"/* "$REDIS_DIR"/* 2>/dev/null || true # ===================================== # 1. Generate Certificate Authority (CA) # ===================================== echo "Step 1: Generating Certificate Authority (CA)..." # Generate CA private key openssl genrsa -out "$CA_DIR/ca-key.pem" 4096 # Generate CA certificate (valid for 10 years) openssl req -new -x509 -days 3650 -key "$CA_DIR/ca-key.pem" -out "$CA_DIR/ca-cert.pem" \ -subj "/C=US/ST=California/L=SanFrancisco/O=BakeryIA/OU=Security/CN=BakeryIA-CA" echo "✓ CA certificate generated" echo "" # ===================================== # 2. Generate PostgreSQL Server Certificates # ===================================== echo "Step 2: Generating PostgreSQL server certificates..." # Generate PostgreSQL server private key openssl genrsa -out "$POSTGRES_DIR/server-key.pem" 4096 # Create certificate signing request (CSR) openssl req -new -key "$POSTGRES_DIR/server-key.pem" -out "$POSTGRES_DIR/server.csr" \ -subj "/C=US/ST=California/L=SanFrancisco/O=BakeryIA/OU=Database/CN=*.bakery-ia.svc.cluster.local" # Create SAN (Subject Alternative Names) configuration cat > "$POSTGRES_DIR/san.cnf" < "$REDIS_DIR/san.cnf" <