mtls
Настройка и конфигурация сертификата mTLS для Headless CMS OneEntry с использованием токенов и mTLS, а также развертывание приложения на сервере с Nginx, Docker и GitLab
Часть 1: Настройка mTLS
Защита API
- 1. Используя токен: Сгенерируйте токен в настройках OneEntry и добавьте его в заголовки запроса с параметром 'x-app-token', где значение — это токен.
- 2. Используя mTLS: Включите опцию mTLS в вашей панели управления OneEntry и сгенерируйте сертификат в настройках OneEntry.
Настройка сертификата
- 1. В вашей панели управления перейдите на вкладку 'Доступ' и переключитесь с токена на mTLS.
- 2. Сгенерируйте новый сертификат в OneEntry ('Настройки' -> 'Сертификаты приложений' -> 'Создать новый сертификат').
- 3. Скачайте его на свой компьютер и извлеките в папку 'cert' в корне вашего проекта.
Настройка локальной среды (на примере ReactJS)
- 1. Скачайте файл setupProxy.js и сохраните его в папке 'src'.
- 2. Отредактируйте параметр 'target', указав адрес вашего проекта.
- 3. Установите пакет 'http-proxy-middleware': 'npm install http-proxy-middleware'.
- 4. Запустите приложение.
Часть 2: Конфигурация сервера
Подготовка сервера
- 1. Обновите информацию о репозитории: `apt update`.
- 2. Добавьте репозиторий Docker и установите пакеты: `apt install nginx certbot docker-ce pwgen`.
Конфигурация UFW
- 1. Заблокируйте все входящие соединения: `ufw default deny incoming`.
- 2. Разрешите все исх одящие соединения: `ufw default allow outgoing`.
- 3. Разрешите входящие TCP-соединения на портах 22, 80 и 443: `ufw allow 22,80,443/tcp`.
Конфигурация SSH
- 1. Отредактируйте конфигурацию демона SSH: `nano /etc/ssh/sshd_config`.
- 2. Установите `PasswordAuthentication no`.
- 3. Перезапустите демон SSH: `systemctl restart ssh`.
Конфигурация Nginx
- 1. Удалите файл конфигурации по умолчанию: `rm /etc/nginx/sites-available/default`
- 2. Создайте новый файл конфигурации: `nano /etc/nginx/sites-available/my_app`.
- 3. Скачайте и отредактируйте конфигурацию Nginx из OneEntry, заменив "your_domain.com" на ваш домен.
- 4. Затем выполните команду: ‘ln -s /etc/nginx/sites-available/my_app /etc/nginx/sites-enabled', заменив "my_app" на имя вашего файла конфигурации.
- 5. Выпустите SSL-сертификаты с помощью Certbot: `certbot certonly --webroot -w /var/www/html -d your_domain`
- 6. Проверьте автоматическое обновление сертификатов: `certbot renew --dry-run`.
- 7. Отредактируйте задачу cron Certbot для автоматической перезагрузки конфигурации Nginx после выпуска сертификатов: ‘nano /etc/cron.d/certbot', заменив последнюю строку на: `echo "0 */12 * * * root certbot -q renew && nginx -s reload" > /etc/cron.d/certbot`
- 8. Раскомментируйте строки в файле конфигурации 'nano /etc/nginx/sites-available/my_app' (где 'my_app' — это имя вашего файла конфигурации).
- 9. Проверьте конфигурацию Nginx: `nginx -t`
- 10. Перезагрузите Nginx после каждого изменения: `nginx -s reload`.
Часть 3: Развертывание приложения с GitLab и GitHub
GitHub
Создание нового пользователя для GitHub Runner
- 1. Сгенерируйте пароль: 'pwgen -s 15 1'
- 2. Создайте нового пользователя: 'useradd -m github-runner'
- 3. Установите для него пароль: 'passwd github-runner'
- 4. Добавьте нового пользователя в группы: 'usermod -aG docker github-runner' и 'usermod -aG sudo github-runner'.
- 5. Измените оболочку для пользователя GitHub Runner: 'chsh -s /bin/bash github-runner'
- 6. Переключитесь на нового пользователя: 'sudo su - gitlab-runner'.
Конфигурация GitHub Runner
- 1. Создайте GitHub Runner: перейдите в настройки вашего репозитория, нажмите на 'Actions' и выберите 'Runners', затем нажмите на 'New self-hosted runner'.
- 2. Следуйте инструкциям в блоке 'Download' и первой команде в блоке 'Configure'.
- 3. Добавьте Runner в автозагрузку системы: 'sudo ./svc.sh install'. Вам нужно будет ввести ранее сгенерированный пароль.
- 4. Запустите Runner: 'sudo ./svc.sh start'.
- 5. Перейдите в раздел 'Actions', нажмите на 'Runners' и убедитесь, что 'Runner' работает.
- 6. Вернитесь к пользователю 'root'.
- 7. Создайте рабочую директорию: 'mkdir -p /var/apps/frontend'
- 8. Установите права для пользователя 'github-runner': 'chown -R github-runner:docker /var/apps/frontend'.
Конфигурация переменных окружения в GitHub
- 1. Создайте переменные `DOMAIN`, `MTLS_USER_CERT`, и `MTLS_USER_KEY` в вашем репозитории GitHub ('Настройки' -> 'Secrets and Variables').
- 2. Сгенерируйте сертификат в OneEntry, добавьте сертификат и ключ в переменные. В переменной `DOMAIN` укажите адрес вашего проекта без https.
- 3. Скачайте файл docker-compose.yml и два архива .github и .docker.
- 4. Поместите docker-compose.yml, .github.zip и .docker.zip в корневую папку вашего проекта и извлеките архивы (вы можете удалить архивы после извлечения).
- 5. Выполните команду push в вашем проекте.
- 6. Проверьте процесс в вкладке 'Actions'.
- 7. Проверьте доступность приложения в браузере.
GitLab
Регистрация GitLab Runner
- 1. Укажите теги 'docker, frontend'.
- 2. Перейдите в 'Настройки -> CI/CD -> Runners' и нажмите кнопку 'New project runner'.
- 3. Перейдите в созданную директорию: `cd /var/apps/gitlab-runner`.
- 4. Выполните команду для начала процесса регистрации: `docker compose run runner register`.
- 5. Введите URL GitLab, например, https://gitlab.com/.
- 6. Получите токен регистрации из GitLab (в разделе 'Runners' проекта) и вставьте его в терминал.
- 7. Укажите исполнителя как 'docker'.
- 8. Укажите образ по умолчанию как docker:20.10.16.
Настройка переменных окружения в GitLab
- 1. Создайте переменные `DOMAIN`, `MTLS_USER_CERT`, и `MTLS_USER_KEY` в вашем репозитории GitLab ('Настройки' -> 'CI/CD' -> 'Variables').
- 2. Сгенерируйте сертификат в OneEntry, добавьте сертификат и ключ в переменные, и укажите адрес вашего проекта без https в переменной `DOMAIN`.
- 3. Скачайте файлы docker-compose.yml, .gitlab-ci.yml и архив .docker, поместите файлы в корень вашего проекта и распакуйте архивы (вы можете удалить архивы после распаковки).