Назад | Перейти на главную страницу

Включить HTTP Strict Transport Header глобально в HAProxy

Я хочу включить заголовки HTTP Strict Transport Security (HSTS) глобально для всех моих бэкэндов в HAProxy v1.5.

Следуя инструкциям от https://www.haproxy.com/blog/haproxy-and-http-strict-transport-security-hsts-header-in-http-redirects/ Я могу добавить следующую строку в файл конфигурации серверной части, и она работает должным образом.

http-response set-header Strict-Transport-Security max-age=16000000;\ 
includeSubDomains;\ preload;

У меня есть дюжина внутренних файлов, и, вероятно, в будущем их будет больше. Я бы хотел разместить это в одном месте.

Я бы хотел что-то похожее на то, как это настроено глобально в Apache httpd.conf:

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

haproxy не имеет иерархической конфигурации, как у Apache. Я не думаю, что это возможно.

Теперь HAPROXY поддерживает HSTS, для этого я выполнил следующие шаги.

Вот мой cfg файл

Шаг # 1 Добавьте статический шифр (НЕ ОБЯЗАТЕЛЬНО, Я ДЕЛАТЬ ДОБРО ПОЖАЛОВАТЬ)

frontend http-in
    bind 192.168.71.20:443 ssl crt /etc/ssl/private/domain.pem ca-file /etc/ssl/private/domain/domain.ca-bundle no-sslv3 force-tlsv12 no-tls-tickets ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-GCM-SHA384:AES128-SHA256:AES128-SHA:AES256-SHA256:AES256-SHA:!MD5:!aNULL:!DH:!RC4

Шаг # 2 Создайте ACL для маркировки защищенных пакетов

    # Distinguish between secure and insecure requests
acl secure dst_port eq 443

Защитите свой файл cookie

    # Mark all cookies as secure if sent over SSL
rsprep ^Set-Cookie:\ (.*) Set-Cookie:\ \1;\ Secure if secure

Наконец примените настройки HSTS

    # Add the HSTS header with a 1 year max-age
rspadd Strict-Transport-Security:\ max-age=31536000 if secure

После этого перезапустите haproxy