mnemo_cards/mnemo_cards_backend/README_HTTPS.md

94 lines
3.5 KiB
Markdown
Raw Normal View History

2025-11-16 11:25:27 +00:00
# Настройка HTTPS для Mnemo Cards Backend
## Обзор
Сервер поддерживает два режима работы:
- **HTTP** (по умолчанию) - для разработки
- **HTTPS** - для продакшена с доменом
**ВАЖНО**: Существующие сертификаты в папке `certs/` предназначены для certificate pinning в мобильном приложении, а НЕ для HTTPS сервера!
## Режимы запуска
### 1. HTTP режим (разработка)
```bash
# Используйте существующий скрипт
./run_dev.sh
# Или напрямую
dart run lib/main.dart --isar isar --workdir $(pwd) --backup backup -a 0.0.0.0 -p 8000
```
### 2. HTTPS режим (продакшен)
```bash
# Сначала сгенерируйте SSL сертификаты для HTTPS сервера
./certs/generate_https_server_cert.sh
# Затем запустите с HTTPS
./run_https.sh
# Или напрямую
dart run lib/main.dart --isar isar --workdir $(pwd) --backup backup --certs $(pwd)/certs/https_server -a 0.0.0.0 -p 443
```
## SSL сертификаты
### Для HTTPS сервера (отдельно от certificate pinning)
Скрипт `./certs/generate_https_server_cert.sh` создает самоподписанные сертификаты для HTTPS сервера домена `1592725-cf88967.twc1.net`.
### Certificate Pinning сертификаты
Существующие сертификаты в `certs/` используются для certificate pinning в мобильном приложении и НЕ должны изменяться.
### Для продакшена
Рекомендуется использовать сертификаты от доверенного CA:
- Let's Encrypt (бесплатно)
- Cloudflare SSL
- Другие коммерческие CA
## Конфигурация
### CORS настройки
Сервер автоматически настраивает CORS для поддержки:
- HTTP соединений (localhost, 127.0.0.1)
- HTTPS соединений (1592725-cf88967.twc1.net)
### Порты
- HTTP: 8000 (разработка)
- HTTPS: 443 (продакшен)
### Домены
- HTTP: `http://localhost:8000`
- HTTPS: `https://1592725-cf88967.twc1.net:443`
## Безопасность
### HSTS
При использовании HTTPS автоматически добавляется заголовок `Strict-Transport-Security` для принуждения к HTTPS соединениям.
### CORS
Настроен для поддержки всех необходимых заголовков и методов для API.
## Тестирование
### HTTP тест
```bash
curl -X GET http://localhost:8000/health
```
### HTTPS тест
```bash
# Для самоподписанных сертификатов
curl -k -X GET https://1592725-cf88967.twc1.net:443/health
# Для доверенных сертификатов
curl -X GET https://1592725-cf88967.twc1.net:443/health
```
## Развертывание
1. Сгенерируйте SSL сертификаты для вашего домена
2. Настройте DNS записи для домена
3. Запустите сервер с HTTPS
4. Настройте reverse proxy (nginx) если необходимо
5. Обновите клиентские приложения для использования HTTPS URL