Как отключить HSTS в haproxy
У меня есть тестовый веб-сайт haproxy-ssl-terminated (haproxy 1.5.8 2014/10/31, debian jessie stock), на котором истек срок действия сертификата. Я хотел бы иметь возможность использовать сайт при получении нового сертификата, но Chrome и Firefox говорят мне, что у меня включен HSTS. Я посмотрел, что мне нужно, чтобы включить HSTS в haproxy, но мне кажется, что у меня нет ни одной соответствующей строки в моем haproxy.conf
, Также я не вижу никаких следов соответствующих Strict-Transport-Security
заголовок, ни при использовании инспектора chrome/firefox, ни при использовании curl.
Заголовки, которые я получаю при использовании curl --insecure -i https://....
являются:
Date: Mon, 02 Jul 2018 07:27:31 GMT
Server: Apache
Last-Modified: Fri, 29 Jun 2018 08:54:36 GMT
Vary: Accept-Encoding
Content-Type: text/html
X-Varnish: 296609
Age: 0
Via: 1.1 varnish-v4
ETag: W/"962f-56fc3ff5ab00b-gzip"
Transfer-Encoding: chunked
Connection: close
Accept-Ranges: bytes
Set-Cookie: ServerID=A; path=/
Cache-control: private
Как я могу временно отключить HSTS? Как я могу определить, вызывает ли включение HSTS в первую очередь?
1 ответ
Как мы видим из вашего curl
выходной, в настоящее время нет Strict-Transport-Security
заголовок. В HAProxy было бы http-response set-header Strict-Transport-Security ...
в конфигурации.
Это было там раньше, возможно, раньше, чем у вас был HAProxy перед веб-сервером. Это до того, как HSTS по дизайну кэшируется браузером для max-age=
секунд. Если бы вы там были, например, max-age=31536000
, он был кэширован на год, считая с последнего присутствия заголовка.
RFC 6797 6.1.1. Директива о максимальном возрасте
ТРЕБУЕМЫЙ
max-age
директива указывает количество секунд после получения поля заголовка STS, в течение которого агент UA рассматривает хост (от которого было получено сообщение) как известный хост HSTS.
Вы не можете временно отключить HSTS со стороны сервера, удалив заголовок. Вам необходимо обновить сертификаты раньше, чтобы новый сертификат поступил до истечения срока действия старого. Еще лучше: автоматизируйте процесс обновления, как Certbot для сертификатов Let's Encrypt.