#!/bin/bash # Генерация SSL сертификатов для PostgreSQL # Автор: Сергей Антропов # Сайт: https://devops.org.ru set -e echo "🔐 Генерация SSL сертификатов для PostgreSQL..." # Создаем директорию для сертификатов mkdir -p postgres-ssl # Переходим в директорию с сертификатами cd postgres-ssl # Генерируем приватный ключ для CA echo "📝 Генерация CA ключа..." openssl genrsa -out ca.key 4096 # Генерируем самоподписанный сертификат CA echo "📝 Генерация CA сертификата..." openssl req -new -x509 -days 365 -key ca.key -out ca.crt \ -subj "/C=RU/ST=Moscow/L=Moscow/O=Sensus/OU=IT/CN=ca.sensus.io" # Генерируем приватный ключ для сервера echo "📝 Генерация серверного ключа..." openssl genrsa -out server.key 4096 # Генерируем запрос на сертификат для сервера echo "📝 Генерация запроса на сертификат сервера..." openssl req -new -key server.key -out server.csr \ -subj "/C=RU/ST=Moscow/L=Moscow/O=Sensus/OU=IT/CN=postgres.sensus.io" # Создаем конфигурационный файл для расширений cat > server.conf << EOF [req] distinguished_name = req_distinguished_name req_extensions = v3_req prompt = no [req_distinguished_name] C = RU ST = Moscow L = Moscow O = Sensus OU = IT CN = postgres.sensus.io [v3_req] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = postgres.sensus.io DNS.2 = localhost DNS.3 = postgres IP.1 = 127.0.0.1 IP.2 = 10.99.0.90 EOF # Подписываем сертификат сервера с помощью CA echo "📝 Подписание серверного сертификата..." openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key \ -CAcreateserial -out server.crt -days 365 \ -extensions v3_req -extfile server.conf # Устанавливаем правильные права доступа echo "🔒 Установка прав доступа..." chmod 600 server.key ca.key chmod 644 server.crt ca.crt # Удаляем временные файлы rm -f server.csr server.conf echo "✅ SSL сертификаты для PostgreSQL успешно сгенерированы!" echo "" echo "📁 Созданные файлы:" echo " - ca.crt (сертификат CA)" echo " - ca.key (приватный ключ CA)" echo " - server.crt (сертификат сервера)" echo " - server.key (приватный ключ сервера)" echo "" echo "🔐 Сертификаты готовы для использования в PostgreSQL с SSL режимом 'require'"