Проблема: HTTPS шифрует трафик, но первое соединение (или повторное после сброса) может быть перехвачено в открытом виде (HTTP) — атака SSL Stripping (например, mitmproxy, sslstrip). Сертификат не защищает, если клиент изначально не запрашивает HTTPS.

Причины:
1. Клиент вводит `http://` или переходит по ссылке/редиректу без HTTPS.
2. Атакующий перехватывает начальный HTTP-запрос, блокирует редирект на HTTPS и подменяет трафик (MITM — Man-in-the-Middle).
3. Даже если сервер редиректит `301` — браузер до первого успешного HTTPS-соединения не знает, что сайт должен быть только по HTTPS.

Решение:
Установка HSTS-заголовка (`Strict-Transport-Security`). После первого успешного HTTPS-ответа браузер запоминает: все будущие запросы к домену — только по HTTPS, даже если пользователь вводит `http://`. Отключает возможность игнорировать сертификатные ошибки (через `includeSubDomains` и `max-age`).

Пример конфигурации Nginx:
nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

- `max-age` — срок (в секундах) запоминания политики.
- `includeSubDomains` — распространить на все поддомены.
- `preload` — заявка на добавление в встроенные списки браузеров (Chrome, Firefox и др.).

Проверка (cURL):
bash
curl -sI https://forensicanvil.ru | grep -i strict-transport-security


Важно:
- Не включать, если на части поддоменов нет HTTPS (иначе они станут недоступны).
- `max-age` ставить не менее 6 месяцев (31536000 сек) для эффекта preload.
- После активации HSTS с `preload` откат без обновления списков занимает годы (невозможен удалённо).