mnemo_cards/mnemo_cards_backend/HTTPS_SETUP.md

108 lines
4.6 KiB
Markdown
Raw Normal View History

2025-11-16 11:25:27 +00:00
# Настройка HTTPS для домена 1592725-cf88967.twc1.net
## Что было сделано
**Сервер теперь поддерживает как HTTP, так и HTTPS**
**HTTP режим продолжает работать как раньше** (для разработки)
**HTTPS режим настроен для домена** (для продакшена)
**Certificate pinning сертификаты не затронуты**
## Как запустить
### HTTP режим (разработка) - как раньше
```bash
./run_dev.sh
# или
dart run lib/main.dart --isar isar --workdir $(pwd) --backup backup -a 0.0.0.0 -p 8000
```
### HTTPS режим (продакшен) - РЕКОМЕНДУЕМЫЙ
```bash
# Используйте Let's Encrypt сертификаты (автоматически)
./run_https_production.sh
```
### Двойной режим (HTTP + HTTPS одновременно) - РЕКОМЕНДУЕМЫЙ
```bash
# Автоматический запуск в двойном режиме через build_app.sh
# Скрипт автоматически:
# 1. Проверит наличие Let's Encrypt сертификатов
# 2. Если сертификатов нет - создаст их автоматически
# 3. Запустит сервер в соответствующем режиме
./build_app.sh
```
### HTTP режим (продакшен) - для reverse proxy
```bash
# HTTP сервер для работы за nginx/apache
./run_http_production.sh
```
### HTTPS режим (тестирование) - только для разработки
```bash
# 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
### Ручное создание сертификатов (если автоматическое не работает)
```bash
# Установите 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/`
## Тестирование
```bash
# HTTP тест
curl -X GET http://localhost:8000/health
# HTTPS тест (с самоподписанным сертификатом)
curl -k -X GET https://1592725-cf88967.twc1.net:443/health
```