apache中启用hsts需在https虚拟主机内添加strict-transport-security响应头,前提为ssl已启用、443端口配置正确、http强制跳转https且mod_headers已加载;推荐先用短max-age测试,再配合x-content-type-options等安全头使用。
apache 中启用 hsts(http strict transport security)只需在已配置 ssl 的虚拟主机内添加一行响应头指令,但必须确保 https 已正常工作且重定向无误,否则可能造成站点不可访问。
确认前提条件
HSTS 仅对 HTTPS 响应生效,且浏览器只在收到有效 HTTPS 响应后才接受该头。因此需先确保:
- SSL 模块已启用(
LoadModule ssl_module modules/mod_ssl.so) - 虚拟主机监听 443 端口并正确加载证书(
SSLCertificateFile和SSLCertificateKeyFile) - HTTP 请求已强制跳转到 HTTPS(如通过
Redirect permanent / https://example.com/) -
mod_headers模块已加载(HSTS 依赖此模块注入响应头)
添加 HSTS 响应头
在 HTTPS 虚拟主机(<virtualhost></virtualhost>)配置块中加入:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
说明:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
max-age=31536000表示浏览器记住该策略 1 年(单位为秒) -
includeSubDomains让策略对所有子域名(如 api.example.com)同样生效 -
preload是可选参数,表示你愿意将域名提交至浏览器 HSTS 预加载列表(提交前需确保全站长期稳定支持 HTTPS)
验证与注意事项
配置完成后需执行以下步骤:
- 运行
apachectl configtest检查语法是否正确 - 重启 Apache(
systemctl restart apache2或apachectl restart) - 用浏览器访问 HTTPS 地址,在开发者工具 → Network → Response Headers 中确认出现
Strict-Transport-Security字段 - 首次设置建议先用较短的
max-age(如 300 秒)测试,确认跳转和功能无误后再调高 - 一旦浏览器收到 HSTS 头,即使后续服务器移除该头,浏览器仍会在有效期内容强制使用 HTTPS;若误配导致服务中断,需手动清除浏览器 HSTS 缓存(Chrome 地址栏输入
chrome://net-internals/#hsts)
搭配其他安全头增强防护
HSTS 应与其他关键安全头协同使用,例如在同一个虚拟主机中补充:
-
Header always set X-Content-Type-Options "nosniff"(防止 MIME 类型混淆) -
Header always set X-Frame-Options "DENY"(防御点击劫持) -
Header always set X-XSS-Protection "1; mode=block"(启用旧版 XSS 过滤器) -
Header always set Referrer-Policy "no-referrer-when-downgrade"(控制 Referer 发送行为)










