mnemo_cards/mnemo_cards_backend/HTTPS_SETUP.md
2025-11-16 14:25:27 +03:00

4.6 KiB
Raw Blame History

Настройка HTTPS для домена 1592725-cf88967.twc1.net

Что было сделано

Сервер теперь поддерживает как HTTP, так и HTTPS HTTP режим продолжает работать как раньше (для разработки) HTTPS режим настроен для домена (для продакшена) Certificate pinning сертификаты не затронуты

Как запустить

HTTP режим (разработка) - как раньше

./run_dev.sh
# или
dart run lib/main.dart --isar isar --workdir $(pwd) --backup backup -a 0.0.0.0 -p 8000

HTTPS режим (продакшен) - РЕКОМЕНДУЕМЫЙ

# Используйте Let's Encrypt сертификаты (автоматически)
./run_https_production.sh

Двойной режим (HTTP + HTTPS одновременно) - РЕКОМЕНДУЕМЫЙ

# Автоматический запуск в двойном режиме через build_app.sh
# Скрипт автоматически:
# 1. Проверит наличие Let's Encrypt сертификатов
# 2. Если сертификатов нет - создаст их автоматически
# 3. Запустит сервер в соответствующем режиме
./build_app.sh

HTTP режим (продакшен) - для reverse proxy

# HTTP сервер для работы за nginx/apache
./run_http_production.sh

HTTPS режим (тестирование) - только для разработки

# 1. Сгенерировать самоподписанные сертификаты (только для тестов)
./certs/generate_https_server_cert.sh

# 2. Запустить HTTPS сервер с самоподписанными сертификатами
./run_https.sh

URL адреса

  • HTTP: http://localhost:8000 (разработка)
  • HTTPS: https://1592725-cf88967.twc1.net:443 (продакшен)

Важные моменты

  1. Certificate pinning сертификаты в папке certs/ НЕ изменены
  2. HTTPS сертификаты созданы в отдельной папке certs/https_server/
  3. CORS настроен для поддержки обоих протоколов
  4. HSTS заголовки добавляются автоматически для HTTPS

Автоматическое создание SSL сертификатов

build_app.sh автоматически создает Let's Encrypt сертификаты

Скрипт build_app.sh автоматически:

  1. Проверяет наличие Let's Encrypt сертификатов
  2. Если сертификатов нет - создает их автоматически
  3. Запускает сервер в соответствующем режиме

Требования для автоматического создания сертификатов

Для успешного создания Let's Encrypt сертификатов убедитесь, что:

  • Домен 1592725-cf88967.twc1.net указывает на IP адрес сервера
  • Порт 80 доступен извне (не заблокирован firewall)
  • На сервере установлен certbot
  • Сервер может принимать входящие соединения на порт 80

Ручное создание сертификатов (если автоматическое не работает)

# Установите certbot (если не установлен)
sudo apt install certbot  # Ubuntu/Debian

# Получите сертификат вручную
sudo certbot certonly --standalone -d 1592725-cf88967.twc1.net
# Сертификаты будут в /etc/letsencrypt/live/1592725-cf88967.twc1.net/

2. Cloudflare SSL (если домен на Cloudflare)

  • Включите SSL/TLS в панели Cloudflare
  • Выберите "Full (strict)" режим
  • Сертификаты будут автоматически обновляться

3. Другие CA

  • Comodo, DigiCert, Sectigo и др.
  • Загрузите полученные сертификаты в certs/production/

Тестирование

# HTTP тест
curl -X GET http://localhost:8000/health

# HTTPS тест (с самоподписанным сертификатом)
curl -k -X GET https://1592725-cf88967.twc1.net:443/health