Настройка сервера (действующий проект)
📌 Общая информация:
Действующий онлайн-сервис (бот в телеграм). Пользователи активно работают с проектом в реальном времени, поэтому любые изменения в инфраструктуре должны проводиться без остановки сервера или с минимальным вмешательством.
⚙️ Архитектура проекта:
Сервер: VPS (Ubuntu/Debian)
Хостинг: Тот же провайдер, где размещён основной проект
База данных: PostgreSQL (внутреннее подключение, без SSL)
Сервис очередей: RabbitMQ (внутреннее подключение, без SSL)
Сервер не пустой – на нём уже работает production-сборка проекта
Приложение использует очереди и БД, к которым сейчас идёт незащищённое подключение
Планируется внедрить SSL-соединения для безопасной передачи данных
🎯 Цель задания:
Обеспечить безопасное SSL-подключение к Базе Данных и Сервису Очередей проекта Woome AI.
Настройка должна быть выполнена через самоподписанные сертификаты с использованием OpenSSL.
После настройки необходимо предоставить техническую инструкцию для разработчиков о том, как подключаться к сервисам с поддержкой SSL.
✅ Что необходимо сделать:
1. 🔐 Генерация сертификатов (OpenSSL)
Создать root CA (корневой сертификат)
Сгенерировать:
Сертификат сервера (используется PostgreSQL и RabbitMQ)
Сертификат клиента (для приложений и ботов)
Примеры сертификатов: .crt, .key, .pem, .csr — в зависимости от нужд PostgreSQL и RabbitMQ
2. 🛠️ Настройка PostgreSQL
Включить ssl = on в postgresql.conf
Указать пути к .crt, .key, и CA-файламОбновить pg_hba.conf:
Использовать метод hostssl
Указать способ авторизации: cert или md5 с SSL
Открыть нужный порт на фаерволе (если используется)
Перезапустить PostgreSQL
Проверить подключение с sslmode=require и через psql
3. 🛠️ Настройка RabbitMQ
Включить SSL через конфигурацию (rabbitmq.conf или .env)
Указать:
ssl_options.cacertfile
ssl_options.certfile
ssl_options.keyfile
Настроить прослушивание порта 5671 (стандарт для amqps)
Убедиться в доступности и стабильности сервиса
Перезапустить RabbitMQ и проверить подключение
4. 🧪 Тестирование
Проверить соединение с PostgreSQL (psql, через код)
Проверить amqps-подключение к RabbitMQ (amqp-клиент)Убедиться, что:
Сертификаты принимаются
Данные передаются по зашифрованному каналуНе возникает ошибок при подключении или работе с сервисами
5. 📘 Документация
Подготовить технический документ (PDF или Markdown) с инструкциями:
Как подключаться к Базе Данных (PostgreSQL) по SSL
Примеры строки подключения
Параметры: sslmode, sslrootcert, sslcert, sslkey
Как подключаться к RabbitMQ по SSL
Примеры строки подключения
Список необходимых параметров
Где хранятся сертификаты (путь, структура)
Какие зависимости нужны (для локальной разработки)
Возможные ошибки и способы их решения
Шаблон: https://drive.google.com/file/d/1xi_Q-jHwiioaE0wfvWHtbt3LEypoAr8O/view?usp=sharing
📂 На выходе требуется:
Сгенерированные сертификаты:
Root CA
Серверный сертификат
Клиентский сертификат
Настроенные конфиги:
postgresql.conf
pg_hba.conf
rabbitmq.conf (или docker/env, если контейнеризировано)
Документ: «Как подключаться к БД и RabbitMQ через SSL»
Краткий лог всех выполненных действий и использованных команд
🔐 Доступы, которые будут предоставлены:
SSH-доступ к VPS
⏳ Срок выполнения:
Весь объём работ оценивается в 2–4 часа
Все действия должны быть согласованы в процессе, с учётом того, что проект уже работает в онлайне
Перезагрузку сервисов нужно проводить поэтапно, чтобы избежать даунтайма