Как настроить HSTS

Как настроить HSTS Хостинг

Безопасность — одна из наивысших ценностей современного существования и сайты здесь не исключение. HSTS — герой сегодняшнего обзора. Вы узнаете, как добиться, чтобы браузеры открывали страницы только по HTTPS-защищённому протоколу, даже если пользователь намеренно введёт адрес с http://.

HTTPS-протокол уже стал стандартным требованием для любого проекта. За этим тщательно следят поисковые системы, а Яндекс даже награждает сайт специальным знаком.

Защищённое соединение

Многие начинающие вебмастера настраивают 301 редирект с http:// на https:// и на этом успокаиваются. Однако аудит сайта в Serpstat выдаёт серьёзную ошибку: не поддерживается протокол HTTP Strict Transport Security (HSTS).

Аудит сайта на HTTPS

Как видите, этого недостаточно. Давайте разберёмся в чём проблема, как её исправить а также плюсы и минусы такого подхода.

Что такое HSTS

Даже если выпущен SSL-сертификат и настроено перенаправление на https:// всё равно в ряде случаев может произойти небезопасное соединение.

  1. Пользователь ввёл в строку адреса домен вместо полного URL (sitefromzero.info вместо https://sitefromzero.info/). В этом случае, браузеры по умолчанию используют http://.
  2. Непосредственный переход по ссылке или адресу страницы с http://, что может быть случайным или намеренным с целью перехвата данных.
  3. Сеть пользователя может враждебно относиться к https:// и автоматически менять их на http://.

Чтобы повысить степень безопасности в 2012 году был разработан специальный механизм работы сайта, который сообщает браузеру, что он открывается только по защищённому протоколу.

HTTP Strict Transport Security — алгоритм принудительного взаимодействия с сайтом только посредством HTTPS-соединения.

Это означает, что если ваш ресурс использует политику безопасности HSTS, то пользовательский браузер обязан автоматически заменять все http-ссылки на https://.

Другими словами, HSTS — это аналог 301-го редиректа, но на уровне браузера, а не страниц. Зачем же тогда было мучиться, спросите вы… Дело в том, что при 301-редиректе первая загрузка сайта обычно происходит по незащищённому соединению. А в случае с HSTS продуман механизм защиты даже для первого «свидания». Но обо всём по порядку.

HSTS следует использовать только убедившись, что HTTPS работает корректно.

Также важно понять, что HSTS это перенаправление, но не истинный редирект. Его видят только браузеры, а вот Googlebot его не заметит. Это дополнительный инструмент, который применяется совместно с настоящими редиректами.

В случае, если сайт не может обеспечить зашифрованное соединение (например, закончился срок действия SSL-сертификата), то доступ к нему будет закрыт.

Поддержка браузерами

На сегодняшний день Strict Transport Security поддерживают все современные браузеры. По данным Caniuse 96.77% пользователей используют браузеры с поддержкой HSTS.

Поддержка браузерами HSTS

Настройка

Внедрение HSTS производится либо активацией в личном кабинете хостинг-провайдера, либо самостоятельным прописанием заголовка HTTP Strict Transport Security, который будет добавляться ко всем ответам вашего сервера..

В панели управления хостингом

Для начала выясните: есть ли такая функция на вашем хостинге. Например, если вы пользуетесь панелью ISPmanager, то достаточно установить галочку после того, как будет выпущен SSL-сертификат.

С помощью файла .htaccess

Откройте файл .htaccess с помощью FileZilla и добавьте код. Заголовок может содержать разный набор переменных, для своего блога я выбрала самый полный вариант:

Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS
  • Strict-Transport-Security — заголовок принудительного использования HTTPS-протокола;
  • параметр max-age показывает браузеру время в секундах (31536000с примерно соответствует году), когда сайт доступен только по https:// соединению;
  • includeSubDomains указывает, что это правило распространяется также на все поддомены;
  • preload — такая директива считается запросом на включение сайта в Preload list.

О необходимости создания списка мы подробно поговорим ниже, а сейчас я только отмечу, что удаление директивы preload расценивается как запрос на удаление из него.

Preload list

Рассмотренный механизм всё же имеет недостаток: HSTS-политика не способна защитить первое соединение с сайтом и утечка данных всё ещё остаётся актуальной. А ведь клиент может переустановить систему, зайти с другого браузера или устройства а также просто очистить кэш.

Получается, что все эти ситуации не могут гарантировать 100%-безопасное соединение. Особенно это важно на ресурсах, производящих транзакции.

Поэтому Google Chrome в 2010 году стал дополнительно составлять список сайтов, которые при первом посещении пользователем в браузере Chrome открываются исключительно по HTTPS-протоколу.

Позднее на основе этого HSTS preload list стали формировать списки для Microsoft, Safari, Mozilla Firefox.

Чтобы попасть в список воспользуйтесь сервисом HSTS Preload. Сначала он проверяет сайт на соответствие требований.

Проверка HSTS

Если результат отрицательный, то увидите красный или жёлтый экран и ошибки, которые нужно исправить.

Не поддерживается протокол HTTP Strict Transport Security

При положительном результате выйдет сообщение, что протестированный сайт может быть добавлен в preload list.

Website eligible for the HSTS preload list

Если вы уверены, что HTTPS-протокол работает корректно, то отправьте заявку. Если есть сомнения, то для начала проведите тестирование указав небольшой временной промежуток.

Требования к добавлению сайта в Preload list:

  • наличие SSL-сертификата;
  • перенаправление всех страниц с http:// на https://;
  • все субдомены (включая www, если для него есть DNS-запись) работают по HTTPS-протоколу;
  • директива max-age больше года;
  • указание директивы includeSubDomains;
  • наличие директивы preload.

Я решила отправить заявку, проставила галочки и попросила добавить sitefromzero.info в HSTS список Google, откуда потом попадут данные и в другие браузеры.

Добавление в список предварительной загрузки

Проверка

Новые записи жёстко кодируются в исходном коде Chrome, потребуется несколько месяцев прежде, чем сайт будет стабильно отображаться в списке. Проверить текущий статус можно с помощью специальных сервисов.

hstspreload.org

HSTS Preload рекомендует зайти через несколько дней и проверить статус сайта. В случае, если он не соответствует требованиям безопасного соединения, то будет исключён из списка.

Статус HSTS

ssllabs.com

Проверить попал ли проект в Preload List можно и с помощью сервиса ssllabs.com.

ssllabs.com
SSL Report

Как видно из скриншота, мой блог уже попал в списки трёх браузеров (Edge, Firefox, Internet Explorer), но ещё не включён в Chrome.

Оценка «A+» означает, что сайт работает по HSTS.

net-internals

Проверить правильно ли работает HSTS можно перейдя по ссылке chrome://net-internals/#hsts и указав свой домен. Если алгоритм работает, увидите подобный результат.

HSTS Query

Влияние на SEO

Как я уже писала выше, механизм HSTS разработан и внедрён с целью дополнительной защиты сайтов. Но это не единственное преимущество.

Скорость загрузки

Поскольку проект теперь работает исключительно по HTTPS-протоколу и не требуется выполнять перенаправление, цепочка запросов к серверу укорачивается, что уменьшает нагрузку и ускоряет загрузку страницы. Это положительно влияет в целом на SEO и на ранжирование в частности.

Mixed content

Страницы открываются по https://, но для их оформления мы пользуемся javascript и iframe, ссылающиеся по http://. Это могут быть блоки подписки, видео с Youtube.

Т.е. до настройки HSTS мы сталкивались с проблемой смешанного контента, которая автоматически решается заменой всех ссылок на защищённые https://.

Недостатки

Теперь ещё раз проговорю негативную сторону вопроса. Самый большой минус заключается в том, что процедура исключения из списка достаточно длительная, может занять несколько месяцев. А это значит, что в случае сбоя сайт будет недоступен.

Каждый субдомен также должен иметь свой сертификат и работать по HTTPS.

Именно поэтому рекомендуется проходить процедуру поэтапно, выставляя время сначала на 5 минут, потом неделю, месяц и проверять трафик. Только когда вы будете уверены, что сайт и сертификат работают стабильно, посетители не исчезают, подавайте заявку на включение в Preload list.

NTP-атаки

К сожалению, даже на HSTS злоумышленники могут осуществлять атаки, воздействуя на сетевой протокол времени (NTP). Смысл заключается в изменении срока действия: если удалось обмануть браузер, что срок записи истёк, то открывается доступ к http://.

Таким атакам могут подвергаться и другие технологии безопасности, например SSL/TLS, Kerberos и Active Directory.

Удаление

Если всё же возникла необходимость покинуть список предварительной загрузки, то заполните заявку на удаление, предварительно удалив директиву preload. Как заявляет сам сервис, процесс исключения занимает 6-12 недель.

Полностью отключить HSTS поможет нокаутная запись:

Strict-Transport-Security: max-age=0

Она является доминирующей над записью в списке предварительной загрузки и браузер будет вести себя, как будто сайта нет в Preload list.

Интересно, что субдомены по-прежнему будут работать по HSTS-механизму.

Сегодня мы разобрались со всеми главными вопросами, связанными с работой HTTP Strict Transport Security. Если информация была интересной, ставьте лайки и вподобайки. До новых встреч!

Поделиться с друзьями
Светлана Стецко

Светлана Стецко - администратор, вебмастер, копирайтер, блогер, дизайнер, SEO-специалист этого сайта. Делюсь своими экспериментами, наблюдениями и результатами.

Оцените автора
( 3 оценки, среднее 3.67 из 5 )
SiteFromZero
Добавить комментарий

[text_before_button_comments]

  1. Валерий

    Спасибо, полезная статья. HSTS — это для меня что-то новое!

    Ответить
    1. Светлана Стецко автор

      Да, интересный механизм и я решила провести эксперимент на своём сайте. Делюсь личным опытом с моими читателями.

      Ответить
  2. Газиз

    Очень обширная информация

    Ответить
    1. Светлана Стецко автор

      Благодарю. Стараюсь в своих обзорах акцентировать внимание на все важные аспекты рассматриваемого вопроса.

      Ответить
  3. Elena

    Впервые слышу об этом Strict Transport Security

    Ответить
    1. Светлана Стецко автор

      Безопасность сайта прежде всего. Стоит вникнуть в детали.

      Ответить
  4. Валерий

    Сам недавно настраивал Https. Это оказалось совсем не сложно. На моем хостинге всё можно сделать за 2 минуты.

    Ответить
    1. Светлана Стецко автор

      Использование принудительной загрузки сайта только по защищённому протоколу создаст дополнительную защиту проекту.

      Ответить