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