С повальным переходом работы сайтов в защищенном режиме работы по протоколу HTTPS, многие делают только 301 редирект с HTTP на HTTPS. Но данный метод не единственный и менее безопасный, чем HSTS списки для перехода на защищенный протокол обмена.


Для чего сайт - ресурс, нужно добавить в HSTS preload list.

Существует еще и HSTS (HTTP Strict Transport Security) списки, которые используют большинство современных браузеров. Они то и позволяют администратору сайта или сервера, указать явную необходимость работы ресурса только по HTTPS с автоматическим переходом даже при обращении по HTTP ссылке на сайт.

Указание, для добавления в список производится при помощи HTTP-заголовка Strict-Transport-Security, который отдается при обращении по HTTPS (при обращении по HTTP заголовок игнорируется) он то и указывает браузеру на необходимость оставаться в зоне HTTPS даже при переходе по ссылкам "http://".

После успешного добавления ресурса в списки замена http:// на https:// будет выполняться автоматически при обращении к защищаемому ресурсу как с внешних ресурсов, так и для внутренних ссылок. Так же - этот параметр-заголовок важен для получения оценки A+ в тестах ssllabs.

no_hsts_plreload.png

Что нужно сделать что бы ресурс попал в этот список?

Установить на сервер валидный ssl сертификат. Подойдёт даже бесплатный от Let’s Encrypt или любой платный. Не подойдет только сертификат от startssl.com. Многие браузеры сегодня считают сертификаты этой компании не валидными.

Убедится, что основной сайт корректно работает по https. Проверить, что и поддомены сайта корректно работают по https, если таковые имеются. Эту проверку нужно сделать обязательно, если какой то из поддоменов не работает по HTTPS, а только по HTTP, после добавления ресурса в списки HSTS, он перестанет работать совсем.

Настроить на сайте 301 редирект с HTTP на HTTPS.

Установить HSTS заголовок в конфиге веб-сервера.

В Nginx строку можно добавить как в секцию server виртуального хоста. Если же сервере работает только с одним доменом в секцию http общего конфига nginx.conf:

...
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
...

Для веб сервера Apache в основном конфиге необходимо активировать модуль (mod_headers.so):

...
LoadModule headers_module modules/mod_headers.so
...

Для виртуалхоста необходимо прописать все те же заголовки:

...
<VirtualHost 111.222.111.222:443>
	Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
</VirtualHost>
...

После внесенных изменений, необходимо перезагрузить службы и проверить CURL’ом:

curl -s -D- https://clite.ru | grep Strict

После проделанной работы, ресурс все еще не попал в HSTS, но большая часть подготовительной работы уже позади. Теперь необходимо добавить, ресурс в списки, для этого нужно перейти на сайт hstspreload.org ввести в форму адрес вашего ресурса и нажать на кнопку "Check HSTS preload status and eligibility". Если все проделано правильно, увидите сообщение с чекбоксами и предупреждениями:

Отправка ресурса в списки HSTS

Отмечаем чекбоксы и жмем на кнопку "Submit {ваш ресурс} to the HSTS preload list". Все теперь ваш ресурс будет добавлен в HSTS списки в ближайшее время, проверить добавление, можно на этом же сайте, заполнив еще раз основную форму.


Успешно отправленный ресурс в списки HSTS