Как установить HSTS-заголовок из .htaccess только на HTTPS

Мое веб-приложение работает на разных хостах, которые я контролирую. Чтобы предотвратить необходимость изменения конфигурации Apache для каждого vhost, я добавляю большую часть конфигурации, используя файлы .htaccess в своем репо, поэтому базовая настройка каждого хоста – это всего лишь несколько строк. Это также позволяет изменить конфигурацию при развертывании новой версии. В настоящее время .htaccess (un) устанавливает заголовки, переписывает магию и контролирует кеширование UA.

Я хочу включить HSTS в приложение, используя .htaccess. Просто настроить заголовок легко:

Header always set Strict-Transport-Security "max-age=31536000" 

Но в спецификации четко указано: «Хост HSTS НЕ ДОЛЖЕН включать поле заголовка STS в сообщениях HTTP, передаваемых по незащищенному транспорту». Поэтому я не хочу отправлять заголовок при отправке по HTTP-соединениям. См. Http://tools.ietf.org/html/draft-ietf-websec-strict-transport-sec-14 .

Я попытался настроить заголовок, используя среду vars, но я застрял там. Кто знает, как это сделать?

По-видимому, существует доступная переменная среды HTTPS, которую можно легко использовать. Для людей с тем же вопросом:

 Header set Strict-Transport-Security "max-age=31536000" env=HTTPS 

Чтобы построить ответ на nielsr, я использовал следующее в .htaccess для выполнения рекомендаций безопасного развертывания на https://hstspreload.org, которые будут жестко кодировать домен в браузере Chrome. Помните, что это обеспечит HSTS для ваших поддоменов, и включение в список предварительной загрузки не может быть легко отменено, поэтому rtfm.

  Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS  

Для httpd.conf (если у вас есть доступ для редактирования), вы можете использовать

  Header always set Strict-Transport-Security "max-age=31536000; includeSubdomains;"  

ПРИМЕЧАНИЕ. Вам нужно установить его только на HTTPS-хосте и не может быть на http-хосте.

Когда я должен, и не должен ли я использовать файлы .htaccess?

Разрешение файлов .htaccess заставит Apache искать их при каждом доступе к вашему серверу. Поскольку также ищутся родительские каталоги, это займет некоторое (небольшое) количество времени и может повлиять на производительность вашего сервера. Источник