94 lines
3.5 KiB
Markdown
94 lines
3.5 KiB
Markdown
|
|
# Настройка 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
|