#!/bin/bash # Generate self-signed certificate for PostgreSQL proxy # Usage: ./generate-cert.sh [hostname1] [hostname2] ... HOSTNAMES=("dev.db.deinserver.co" "tst.db.deinserver.co" "prd.db.deinserver.co") # Add additional hostnames from command line arguments if [ $# -gt 0 ]; then HOSTNAMES=("$@") fi # Create certs directory if it doesn't exist mkdir -p certs # Build subject alternative names (SAN) SAN="" for hostname in "${HOSTNAMES[@]}"; do if [ -n "$SAN" ]; then SAN="${SAN},DNS:${hostname}" else SAN="DNS:${hostname}" fi done echo "Generating self-signed certificate for: ${HOSTNAMES[*]}" echo "SAN: ${SAN}" # Generate private key openssl genrsa -out certs/server.key 2048 # Generate certificate signing request openssl req -new -key certs/server.key -out certs/server.csr -subj "/CN=${HOSTNAMES[0]}" -addext "subjectAltName=${SAN}" # Generate self-signed certificate (valid for 10 years) openssl x509 -req -days 3650 -in certs/server.csr -signkey certs/server.key -out certs/server.crt -extensions v3_req -extfile <( cat <