You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache与Spring Boot服务HSTS已配置却显示禁用的解决咨询

解决Apache HSTS配置在Firefox和Tenable中不生效的问题

先确认配置的核心前提

  • 必须放在HTTPS虚拟主机段:HSTS头只能通过HTTPS响应发送,你的Header always set指令一定要放在<VirtualHost *:443>块里,绝对不能放在HTTP的*:80配置段,否则浏览器和Tenable都会直接忽略这个头。
  • 检查Apache模块是否加载:执行apachectl -M(或httpd -M),确认输出里有headers_module和ssl_module。如果没有,在httpd.conf里添加这两行再重启服务:
    LoadModule headers_module modules/mod_headers.so
    LoadModule ssl_module modules/mod_ssl.so
    

修正HSTS配置细节

  • 避免后端头冲突:如果Spring Boot也在发送HSTS头,会和Apache的配置冲突,把指令改成Header always setifempty,只在没有该头的时候设置:
    Header always setifempty Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
    
  • 规范格式减少兼容问题:部分工具对分号后的空格敏感,调整成紧凑格式试试:
    Header always set Strict-Transport-Security "max-age=63072000;includeSubDomains;preload"
    

Firefox端调试与验证

  • 手动核对响应头:按F12打开开发者工具,切到「网络」标签,刷新后看HTTPS请求的响应头,确认Strict-Transport-Security的内容和配置完全一致。
  • 清除浏览器HSTS缓存:如果之前浏览器存了错误状态,在地址栏输about:config,搜索network.stricttransportsecurity.hosts右键重置,再把network.stricttransportsecurity.preloadlist临时设为false,重启浏览器后再访问站点。
  • 注意preload的区别:配置了preload但没提交到预加载列表的话,Firefox不会显示预加载状态,但不影响HSTS本身启用。

Tenable扫描适配

  • 指定扫描HTTPS端口:Tenable默认可能扫HTTP端口,要确保扫描目标是443端口,因为HSTS只在HTTPS响应里生效。
  • 检查扫描策略:在Tenable的扫描策略中,确认「HTTP Strict Transport Security」检测项已启用,且检测逻辑是检查响应头存在且max-age大于0。
  • 重新触发扫描:修改配置并重启Apache后,等5-10分钟让配置完全生效,再重新扫,避免缓存的旧结果干扰。

最终验证步骤

  1. 重启Apache:执行apachectl restart(或systemctl restart httpd,根据系统调整)
  2. 用curl验证:curl -I https://你的域名,确认输出里有正确的HSTS头
  3. 查看Firefox安全标签:点击地址栏锁图标,在「连接安全」里确认HSTS已启用
  4. 重新运行Tenable扫描,确认漏洞项消失

内容的提问来源于stack exchange,提问作者Chanel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 21:37:09