Настройка сервера (действующий проект)
📌 Общая информация:
Действующий онлайн-сервис (бот в телеграм). Пользователи активно работают с проектом в реальном времени, поэтому любые изменения в инфраструктуре должны проводиться без остановки сервера или с минимальным вмешательством.
⚙️ Архитектура проекта:
- Сервер: 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 часа 
- Все действия должны быть согласованы в процессе, с учётом того, что проект уже работает в онлайне 
- Перезагрузку сервисов нужно проводить поэтапно, чтобы избежать даунтайма 



