Браузер, який спочатку вводить http:// і переходить на https:// після переспрямування, уже надіслав один запит у відкритому вигляді, і VPN цього не змінює. Тунель захищає ногу від клієнта до вузла виходу; він не шифрує нічого вище транспортного рівня, тому спостерігач між виходом і джерелом усе ще бачить стрибок відкритого тексту. Зробити HTTPS першим запитом — це зміна на стороні клієнта, яка складається з трьох частин: справжньої адреси HTTPS, режиму оновлення браузера та власної політики сайту. Нижче наведено кроки, якими я користуюся, кожен з яких містить чек, який показує, чи його виконали.

Крок 1: підтвердьте, що таке перший запит насправді

Перш ніж щось змінювати, подивіться, що надсилає браузер. Відкрийте панель мережі зі сторінкою, перезавантаженою з холодного кешу, і прочитайте перший рядок: якщо схема http і статус 301 або 308, усе після цього рядка є другим запитом. curl -sS -o /dev/null -w '%{http_code} %{url_effective}\n' http://example.com відтворює ту саму послідовність поза браузером і друкує URL-адресу, на яку ви потрапили.

Можливі два результати, і вони потребують різних виправлень. Якщо сайт обслуговує HTTPS на тому самому хості, виправлення полягає в тому, щоб припинити публікацію HTTP-форми: оновіть закладку, вікі-посилання, ярлик на робочому столі та шаблон електронної пошти, який люди натискають. Якщо сайт узагалі не обслуговує HTTPS, жодні налаштування веб-переглядача не створять його, і чесною відповіддю є те, що проблемою є місце призначення. Не закривайте другий випадок винятком, оскільки виняток сертифіката на сторінці облікового запису перетворює проблему транспортування на проблему облікових даних. Запишіть, у якому випадку ви перебуваєте, перш ніж торкнутися налаштування.

Крок 2: увімкніть у браузері режим лише HTTPS

Режим оновлення є другою частиною, і режими не є взаємозамінними. Перевірте, що робить ваш, перш ніж увімкнути його: оновити без звуку, оновити з попередженням або відмовитися від завантаження.

У Firefox елементи керування знаходяться за about:config та на сторінці налаштувань конфіденційності, з dom.security.https_only_mode як перемикачем і винятками для кожного сайту, керованими з меню замка. У Chrome і Edge та сама ідея міститься в розділі «Налаштування», «Конфіденційність і безпека», «Безпека» з позначкою «Завжди використовувати безпечні з’єднання». Якою б не була мітка, перевірте поведінку хоста, який відповідає лише на порту 80, тому що режим, який оновлюється, а потім тихо повертається, не є тим захистом, який, на вашу думку, ви ввімкнули. У документації Firefox лише HTTPS описано оновлення, попередження та поведінку винятків для цього веб-переглядача.

Крок 3: виправте ресурси, а не лише адресний рядок

Якщо оновлення не вдається, прочитайте точне повідомлення про помилку замість адресного рядка. Хост без прослуховувача HTTPS, ім’я хоста, яке не відповідає сертифікату, і прострочений ланцюжок створюють різні повідомлення та належать різним власникам. Лише перший — це розрив на стороні сервера; другий, як правило, закладка, яка ніколи не оновлювалася; третій — проблема поновлення, до якої не має значення з’єднання VPN.

Не додавайте виняток сертифіката на сайт облікового запису, оскільки VPN увімкнено. Виняток вимикає перевірку, яка виявила б саме те перехоплення, якому має запобігти VPN.

Третя частина знаходиться всередині сторінки, і це те, за чим люди сумують. Сторінка, яка завантажується через HTTPS, усе ще може отримувати зображення, шрифти чи сценарії з URL-адреси http, і браузер або заблокує їх, або знизить індикатор безпеки для всієї сторінки. Перегляньте невдалі запити на панелі мережі та виправте посилання на ресурси у їхнього власника, а не припускайте, що адресний рядок описує кожен запит. На сайті, який ви запускаєте, це означає виправлення збережених URL-адрес у CMS або шаблоні замість того, щоб переписувати їх у браузері. Якщо ви не можете змінити джерело, запишіть змішаний вміст як відомий пробіл, оскільки замок на сторінці, яка витягує ресурси відкритого тексту, є хибним сигналом.

Крок 4: що HSTS додає, а що ні

HSTS — це політика сайту, а не налаштування браузера, і це єдиний механізм, який витримує введений http:// у новому профілі. Коли браузер бачить заголовок Strict-Transport-Security для хосту, він переписує наступні запити на https перед їх надсиланням, що є саме тією властивістю, яку ви хочете. Це нічого не робить для хосту, який браузер ніколи не відвідував, і нічого для іншого імені хосту, який обслуговує ту саму програму.

Перевірте, що надсилає джерело за допомогою curl -sSI https://example.com | grep -i strict-transport-security. Відсутній заголовок — це зміна сервера, а не те, що клієнт може встановити. Якщо він присутній, прочитайте max-age і чи встановлено includeSubDomains, оскільки між відвідуваннями закінчується короткий максимальний вік, а відсутність includeSubDomains залишає кожен субдомен незахищеним. RFC 6797 визначає, як агент користувача застосовує політику та що він може ігнорувати. Попереднє завантаження є окремим зобов’язанням, тому перевірте статус через API hstspreload.org, перш ніж обіцяти комусь, що домен є в списку.

Перевірка та відкат

Відкат дешевий для налаштувань клієнта та дорогий для HSTS. Вимкнення режиму лише HTTPS негайно відновлює попередню поведінку; довгий максимальний вік – ні, і відвідувачі, які вже отримали його, продовжують оновлювати, доки він не закінчиться.

Тож перевірте в порядку, перш ніж називати це готовим. Перезавантажте з холодного кешу та підтвердьте, що перший запит на панелі мережі – https без попереднього переспрямування. Потім перевірте субдомен, оскільки у includeSubDomains ці політики зазвичай виявляються вужчими, ніж передбачається. Потім перевірте одну сторінку, яка отримує ресурси третьої сторони, оскільки змішаний вміст є помилкою, яка переживає всі інші виправлення.

Якщо після всього цього перший запит все ще є http, клієнт більше не є змінною: це посилання, яке люди натискають. Знайдіть у місцях, якими ви керуєте, http-форму імені хоста, оновіть їх і повторно перевірте з тим самим перезавантаженням холодного кешу. Тримайте запитання про VPN окремо, оскільки тунель змінює, хто може бачити запит, і ніколи не змінює, чи запит зашифрований. Рядок, який потрібно додати в заявку, полягає в тому, що перший запит є важливим, а перенаправлення – це лише квитанція про вже надісланий запит.

Схожі статті