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