Перенаправление на незащищенную версию сайта, когда вы используете имя сайта без https или даже без http, даже с установленным SSL-сертификатом – это огромная проблема. Все дело в том, что в этот момент злоумышленники легко могут перехватить ваши конфиденциальные данные и перенаправить на фейковую страницу, после чего с вашего электронного кошелька пропадут деньги, будут списаны средства с карточки и так далее.
Чтобы этого не произошло, используется технология HSTS. Она представляет собой алгоритм, по которому взаимодействуют сервер и ваш браузер, при этом сайту автоматически присваивается статус защищенного посредством заголовка HTTP Strict Transport Security. Этот статус выдается при ответе сервера и он указывает браузеру, что необходимо включить постоянную автоматическую переадресацию на защищенную версию сайта, работающую под протоколом https.
Тем не менее, несмотря на то, что технология HSTS призвана обеспечить защиту пользователя, все равно остаются уязвимые места:
- При использовании другого браузера;
- При переустановке ОС или вашего браузера;
- После очистки кэша;
- При использовании другого устройства, например планшета или смартфона;
- После окончания срока действия HSTS.
Если первое соединение прошло через протокол HTTP, то оно не будет защищаться. В 85% случаев перенаправление на защищенную версию сайта производится только после того, как был совершен первый переход.
Для того, чтобы решить подобную проблему, Google создал инструмент под названием Preload List. С этим инструментом браузер сначала проверяет, есть ли сайт в списке, а только затем соединяется с ним по защищенному протоколу.
Если у вас активизирована технология HSTS, а какие страницы недоступны по защищенному соединению или просрочен SSL-сертификат, то доступ к таким страница будет заблокирован. Вариантов обойти такое шифрование нет ни в одном из браузеров.
После того, как Preload List активирован, для выхода из него необходимо подавать специальный запрос, рассмотрение которого происходит несколько месяцев. Для браузера Chrome ответ достигает порядка трех месяцев, для других браузеров время ожидания еще больше. Поэтому, прежде чем вносить свой сайт в Preload List, подумайте, нужна ли вам постоянно поддерживать на своем ресурсе работу защищенного протокола.
Когда технология HSTS подключена, в браузере пользователь будет видеть только те сайты, что работают по защищенному протоколу. Даже если вбить в адресную строку домен через обычный протокол HTTP, произойдет автоматический редирект на защищенную версию. Это позволяет сводить к минимуму риск перехвата ваших кукис и конфиденциальных данных.
Настройка HSTS на сайте
Подключить HSTS для сайта можно через личный кабинет, но такую услугу предоставляют только некоторые провайдеры. В большинстве случаев подключение производится путем добавления заголовка с необходимыми параметрами в настройках самого сервера. Существует несколько вариантов подобных заголовков:
- Strict-Transport-Security: max-age=<expire-time> — устанавливается временной промежуток действия HSTS для определенного сайта.
- Strict-Transport-Security: max-age=<expire-time>; includeSubDomains— задается временной период и указывается, что технология HSTS распространяется на основной домен и его субдомены.
- Strict-Transport-Security: max-age=<expire-time>; preload — указывает браузеру период действия HSTS и включение сайта в список Preload List.
- add_header Strict-Transport-Security "max-age=31536000;” - Так выглядит наиболее простой вариант заголовка.
Он обозначает, что заголовок действует 31536000 секунд, т.е. 1 год. Рекомендуется устанавливать минимальное значение времени действия заголовка сразу после параметра «max-age». Это позволит снизить негативное влияние бага, если он возникнет, а также даст возможность в кратчайшие сроки исправить ситуацию.
Перед тем, как настраивать HSTS, рекомендуется установка ликвидного SSL-сертификата, а также ручная настройка всех редиректов, потому что при автоматической переадресации они могут работать некорректно.
Даже если есть ссылки с переходами на незащищенные страницы, вы будете получать уведомления о небезопасном соединении. Поэтому проверять необходимо ВСЕ соединения на сайте, прежде чем подключаться к HSTS
Настойка HSTS в Apache
В конфиг-файле внесите следующие параметры:
<VirtualHost 67.89.123.45:443>
Header always set Strict-Transport-Security "max-age=31536000; includeSubdomains;"
</VirtualHost>
Срок действия заголовка будет обновляться при каждом переходе на сайт и составляет 1 год.
Для того, чтобы пользователи перенаправлялись на страницы с соединением HTTPS, необходимо включить команду:
<VirtualHost *:80>
[...]
ServerName site.ru
Redirect permanent / https://site.ru/
</VirtualHost>
Вместо site.ru укажите название домена своего сайта.
После того, как будут внесены все эти изменения, необходима перезагрузка сервера. После запуска HSTS и включения сайта в Preload List, поддержка технологии будет производиться постоянно.
Настройка HSTS в Nginx
В панели хостинга отыщите конфиг-файл /etc/nginx/conf.d, куда внесите заголовок Strict Transport Security и все необходимые параметры.
ВАЖНО: используйте только сервер, поддерживающий технологию HSTS.
Нельзя применять на одном и том же сервере версию с защищенным протоколом и с незащищенным. Настройте все редиректы с незащищенных страниц на страницы с HTTPS.
На сервисе SSL Server Test вы можете произвести проверку сертификата SSL, а также оценить сайт на предмет защищенности. Если ваш сайт получили оценку «А», это значит, что сертификат безопасности имеется. Для сайтов, имеющих подключенную технологию HSTS, выставляется оценка «А+».
Заключение
Если вы хотите подключить на свой сайт технологию HSTS, то делать это рекомендуется только после того, как вы произведете полную проверку соединений всех страниц по защищенному протоколу.
Для того, чтобы браузер получил команду всего определять данный сайт, как https, необходимо добавить заголовок HTTP Strict Transport Security в файл конфига, после чего произвести перезапуск сервера. При первом запуске установите минимальное значение срока действия заголовка, чтобы при возникновении ошибок вы смогли оперативно их устранить.
Важно постоянно поддерживать HSTS на должном уровне. При появлении страниц с незащищенным соединением http или окончании срока действия SSL-сертификата, при загрузке страниц пользователи будут видеть ошибку.
Не спешите включать свой сайт в список Preload List. Выход из списка – процедура очень длительная и может занимать несколько месяцев.