http-strict-transport-security-max-age

Globalнужен перезапуск

Сколько браузер помнит, что к монитору ходят только по шифру
в конфигурации это строкаhttp-strict-transport-security-max-age 0внутри блока Global
Запрет браузеру ходить к монитору открыто

Заголовок Strict-Transport-Security говорит браузеру: к этому узлу ходи только по шифру, и помни это столько-то секунд. Строка задаёт само число. Умолчание — 0, то есть браузер не запоминает ничего.

Работает только для браузера. Программа, которая ходит на монитор своим клиентом, заголовок обычно игнорирует — значит, для Хаба или другой автоматики строка не даёт ничего.

Смысл появляется вместе с http-redirect-to-https. Само по себе перенаправление защищает только тот запрос, который уже пришёл; заголовок делает так, что следующий раз браузер даже не попробует незашифрованное соединение.

Мы проверили на узле парка: монитор действительно отдаёт этот заголовок со значением max-age=0 — то есть строка есть в ответе всегда, вопрос лишь в числе.

Главная ловушка — поставить большое число до того, как заработало шифрование. Браузер запомнит запрет и перестанет открывать монитор по обычному адресу — а если шифрование потом сломается, доступа не будет вовсе, и снять память браузера придётся руками.
Что делает Хаб. Не пишет — оставляет 0. Для нашего опроса заголовок бесполезен: клиент не браузер. Строка обретёт смысл, когда на монитор начнут ходить люди — и только вместе с включённым перенаправлением на https.
Рекомендуемые значения

Порядок ровно такой: сначала шифрование, потом память о нём:

Значение Когда
0 (умолчание) шифрование не обязательно, ходят программы
86400 обкатка: сутки памяти, легко откатить
31536000 год, когда всё устоялось

Ставить число, не включив http-redirect-to-https, бессмысленно.

Умолчание 0 и назначение — из руководства (§ 3.3.1.58.6). Что монитор отдаёт заголовок со значением 0 — наша проверка на узле парка. Порядок обкатки — наш.
Пример в конфигурации
# сначала шифрование, потом память о нём
http-mgmt-port 1000
http-redirect-to-https true
http-strict-transport-security-max-age 86400
Сутки для обкатки. Год ставят, когда шифрование монитора работает устойчиво и откат не понадобится.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

Типичные ошибки и проблемы

что делают не так и чем это кончается2 ошибки▶

Ставят год, не включив перенаправление на https

наш опыт

Чем чреватоБраузер запоминает запрет на обычные соединения, а шифрование при этом необязательно. Достаточно одной поломки сертификата, чтобы монитор перестал открываться вовсе.
Как заметитьБраузер отказывается открывать монитор и не предлагает продолжить.
Как правильноСначала http-redirect-to-https true и рабочий сертификат, потом число — начиная с суток.

Ждут, что заголовок защитит программный клиент

наш опыт

Чем чреватоЗаголовок исполняет браузер. Программа, ходящая на монитор своим клиентом, продолжит ходить как ходила.
Как заметитьСтрока задана, а автоматика по-прежнему подключается открыто.
Как правильноМенять схему в самом клиенте; заголовок к этому отношения не имеет.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
http-strict-transport-security-max-age <integer>
Значения
целое число секунд; 0 — не запоминать
Умолчание
0 § 3.3.1.58.6
Применение
нужен перезапуск сервиса
Очередь
уже поставленное в очередь не затронет
Где писать
Global
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Наследования нет: строка пишется в корне файла, раздел Global, и действует на все ответы монитора.
Как проверить на узле
Заголовок виден в ответе монитора — смотрим его целиком:
curl -s -D - -o /dev/null http://NODE:1000/status | grep -i strict-transport
Strict-Transport-Security: max-age=0 — умолчание, браузер ничего не запомнит. Другое число означает, что строка задана и применилась.
В Хабе
Цена ошибки
безопасно: неверное значение ничего не ломает
Сценарии
Безопасность узла