我想要为 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 }