Haproxy

在 HAProxy 中全域啟用 HTTP 嚴格傳輸標頭

  • April 18, 2019

我想在 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;"

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

引用自:https://serverfault.com/questions/934721