93 lines
3.5 KiB
Markdown
93 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
|