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

93 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Настройка 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