Files
talkscore-asr/docs/HTTPS.md
T
Vladimir BryzgalovandClaude Opus 5 c992b7907d HTTPS через Caddy с автоматическими сертификатами
Токен и расшифровки разговоров ходили по сети открытым текстом. Теперь в
пакете лежит Caddy: он держит сертификаты Let's Encrypt и продлевает их сам,
а сервис уходит на localhost.

Отдельно решён вопрос подмены адреса: за прокси все запросы приходят с
localhost, и список разрешённых адресов пускал бы кого угодно. Заголовку
с настоящим адресом сервис верит только от доверенного прокси - на это
восемь тестов.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-16 01:41:34 +05:00

3.4 KiB
Raw Blame History

HTTPS для сервиса

Без него токен и расшифровки разговоров идут по сети открытым текстом. Схема простая: Caddy держит сертификаты и HTTPS, сервис сидит на localhost и наружу напрямую не смотрит.

Что нужно от вас

  1. Открыть порты 80 и 443 на роутере и в брандмауэре Windows. Порт 80 нужен Let's Encrypt для проверки владения доменом, 443 - для самой работы. Сейчас оба закрыты.
  2. Проверить домены. asr.netranking.ru уже указывает на 90.157.58.23. asr.talkscore.ru пока не резолвится - добавьте A-запись на тот же адрес.
  3. Порт 8756 можно закрыть снаружи - после перехода на HTTPS он больше не нужен из интернета.

Настройка

В config.toml поменяйте две строки:

[server]
# Сервис больше не смотрит наружу: снаружи стоит Caddy
host = "127.0.0.1"

[security]
# Доверяем заголовку с адресом клиента только от своего же прокси
trust_proxy = "127.0.0.1"

Зачем trust_proxy. За прокси все запросы приходят с localhost, и список разрешённых адресов увидел бы вместо клиента саму машину - то есть пустил бы кого угодно. Caddy передаёт настоящий адрес в заголовке, и сервис его читает, но только когда запрос пришёл от доверенного прокси. Иначе заголовок подделал бы любой желающий.

Домены прописаны в файле Caddyfile рядом со start.bat. Если понадобится изменить список - правьте его.

Запуск

Вместо start.bat запускайте start-https.bat: он поднимает сервис на localhost и Caddy перед ним.

При первом запуске Caddy получит сертификаты - это занимает несколько секунд и требует, чтобы порт 80 был доступен снаружи. Дальше он продлевает их сам, напоминаний не нужно.

Проверка:

curl https://asr.netranking.ru/health

Если сертификат не выдаётся

Caddy пишет причину в своё окно. Частые случаи:

  • порт 80 закрыт - Let's Encrypt не может проверить домен;
  • домен не указывает на эту машину - проверьте A-запись;
  • порт 80 занят другим приложением (IIS, Skype) - освободите его.

Пока сертификата нет, сервис доступен только по http://localhost:8756 с самой машины.

Автозапуск

schtasks /create /tn "talkscore-asr" /tr "C:\talkscore-asr\start-https.bat" ^
         /sc onstart /ru SYSTEM /rl HIGHEST