HSTS (HTTP Strict Transport Security) — заголовок ответа, который сообщает браузеру, что сайт должен открываться только по HTTPS.
Настраивается добавлением одной строки в блок server для вашего сайта:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
Но перед ее добавлением нужно обязательно настроить переадресацию с http порта 80 на https, для основного домена, а также для всех поддоменов, например:
server {
listen 80;
listen [::]:80;
server_name ixnfo.com www.ixnfo.com;
return 301 https://$host$request_uri;
}
Стоит учесть, что включение HSTS сделает невозможным открывать основной домен или любые поддомены по http, так как домен будет добавлен в базу данных браузера, отключение/удаление может занять месяцы, пока например не выйдет новая версия браузера Google Chrome или Firefox.
Проверим конфигурацию и перезапустим nginx чтобы применить изменения:
nginx -t
service nginx restart
После добавления, проверим на сайте hstspreload.org и если все ок, то отобразится кнопка «Submit ixnfo.com to the HSTS preload list». Через некоторое время снова проверим, должно будет написано например «ixnfo.com is currently preloaded.»
max-age=31536000 — время в секундах в течении которого браузер должен помнить что сайт доступен только по HTTPS.
31536000 секунд = 1 год, это минимально рекомендованное значение для внесения в список preload.
includeSubDomains — обязательный параметр, применяет политику HSTS ко всем поддоменам.
preload — рекомендуемый параметр, означает что вы согласны добавить домен в список предварительной загрузки HSTS, который жестко закодирован в браузерах, без него домен не будет добавлен в список. А после его добавления нужно обязательно подать заявку на hstspreload.org.
always — рекомендовано, чтобы HSTS заголовок отправлялся даже при ошибках, хотя его эффект проявляется только при успешных ответах (200).
Список HSTS предзагрузки в Firefox: searchfox.org/mozilla-central/source/security/manager/ssl/nsSTSPreloadList.inc
Смотрите также мою статью:
Установка Certbot в Ubuntu