108 lines
4.6 KiB
Markdown
108 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
|
|||
|
|
```
|