在 HAProxy 中全局启用 HTTP 严格传输标头

在 HAProxy 中全局启用 HTTP 严格传输标头

我想要为 HAProxy v1.5 中的所有后端全局启用 HTTP 严格传输安全 (HSTS) 标头。

按照以下指示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;"

答案1

haproxy 没有像 Apache 那样的分层配置。我认为这是不可能的。

答案2

现在 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

答案3

rspadd 已弃用

http-response add-header Strict-Transport-Security max-age=31536000 if { ssl_fc }

相关内容