📌 Общая информация:

Действующий онлайн-сервис (бот в телеграм). Пользователи активно работают с проектом в реальном времени, поэтому любые изменения в инфраструктуре должны проводиться без остановки сервера или с минимальным вмешательством.


⚙️ Архитектура проекта:

  • Сервер: 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


📂 На выходе требуется:

  1. Сгенерированные сертификаты:

    • Root CA

    • Серверный сертификат

    • Клиентский сертификат

  2. Настроенные конфиги:

    • postgresql.conf

    • pg_hba.conf
      rabbitmq.conf (или docker/env, если контейнеризировано)

  3. Документ: «Как подключаться к БД и RabbitMQ через SSL»

  4. Краткий лог всех выполненных действий и использованных команд


🔐 Доступы, которые будут предоставлены:

  • SSH-доступ к VPS


⏳ Срок выполнения:

  • Весь объём работ оценивается в 2–4 часа

  • Все действия должны быть согласованы в процессе, с учётом того, что проект уже работает в онлайне

  • Перезагрузку сервисов нужно проводить поэтапно, чтобы избежать даунтайма

2 дня назад
Игорь
 
30 лет
9 лет в сервисе
Был
2 дня назад

Заявки фрилансеров

Давид
 
24 года
13 дней в сервисе
Был
2 часа назад
17 часов назад
Алексей
 
51 год
8 лет в сервисе
Был
2 часа назад
110 отзывов(-1)
день назад
ТОП-5
Системное администрирование
Владимир
 
34 года
месяц в сервисе
Был
5 минут назад
2 дня назад
Джавид
 
25 лет
6 месяцев в сервисе
Был
2 часа назад
2 отзыва
2 дня назад
Максим
 
22 года
2 месяца в сервисе
Был
7 часов назад
2 дня назад