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

107 lines
4.6 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 для домена 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
```