apache https安全响应头配置必须在*:443虚拟主机中启用mod_headers和mod_ssl模块,设置hsts、x-content-type-options、csp frame-ancestors及servertokens prod等头,且全部使用header always set确保覆盖所有响应。

配置 Apache 响应头增强 HTTPS 安全性,关键不是堆砌头字段,而是每一条都精准生效、覆盖所有响应、且与 HTTPS 环境严格匹配。HSTS、CSP、X-Content-Type-Options 这几项必须在 443 虚拟主机中配置,且依赖 mod_headers 模块正常加载。
确认并启用必要模块
没有 mod_headers,所有 Header 指令都不起作用;没有 mod_ssl,HTTPS 和 HSTS 就无从谈起:
- 运行 apachectl -M | grep -E "(headers|ssl)",确认输出含 headers_module 和 ssl_module
- 若缺失,在配置文件中取消注释或添加:
LoadModule headers_module modules/mod_headers.so
LoadModule ssl_module modules/mod_ssl.so - Debian/Ubuntu 用户可直接执行:
sudo a2enmod headers ssl && sudo systemctl restart apache2
在 HTTPS 虚拟主机中设置 HSTS
HSTS 只能在 <virtualhost></virtualhost> 块内配置,HTTP 主机里加了也无效,还可能干扰调试:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 推荐起始配置(便于验证和回滚):
Header always set Strict-Transport-Security "max-age=300; includeSubDomains" - 稳定运行数天后,再逐步升级为:
"max-age=31536000; includeSubDomains; preload"(提交预加载前务必确保所有子域长期支持 HTTPS) - 务必配套配置 HTTP → HTTPS 重定向(
<virtualhost></virtualhost>中):
Redirect permanent / https://yourdomain.com/
补充关键安全头,覆盖全部响应
这些头需用 always set,否则 404、500 等错误响应会漏掉,留下漏洞:
-
X-Content-Type-Options: nosniff
阻止浏览器 MIME 嗅探,防范类型混淆导致的 XSS -
X-Frame-Options: SAMEORIGIN 或更现代的
Content-Security-Policy: frame-ancestors 'self';
二者不要共存,新项目优先用 CSP 写法 -
Content-Security-Policy(基础版):
default-src 'self'; script-src 'self'; object-src 'none'; base-uri 'self';
禁用内联脚本和 eval,是防 XSS 的核心防线
隐藏服务器指纹,减少信息泄露
默认响应头会暴露 Apache 版本和模块,给攻击者提供线索:
- 在主配置或虚拟主机中添加:
ServerTokens Prod
ServerSignature Off - 效果:响应头中 Server: Apache,不再显示版本号如 Apache/2.4.52
- 配合其他头一起启用,让攻击面更小、更难被针对性利用










