使用 Debian10 和全新的 Nginx1.20.1,当我检查时:
curl -I https://example.com
我得到了Strict-Transport-Security: max-age=2592000
,当我检查我的网站时 https://www.ssllabs.com/ssltest/analyze.html
,我看到的结果是
严格传输安全 (HSTS) 是 太短 (少于 180 天) max-age=2592000
我搜索了所有 nginx.conf 和所有包含的文件,但找不到该指令add_header Strict-Transport-Security ...
。
因此,我将以下行添加到我的服务器块、http 块、位置块以及其中的一个块中,测试了不同的情况:
add_header Strict-Transport-Security "max-age=41536000; includeSubDomains; preload" always;
并再次检查上面的链接,结果是:
严格传输安全 (HSTS) 无效服务器提供了多个 HSTS 标头
值得一提的是,在上述两种情况下,当我在 Firefox 浏览器中检查响应标头时,我新添加的指令max-age
并2592000
没有生效!
我使用 cloudeflare 作为我的 DNS 服务器,因此我在仪表板中启用/禁用了 HSTS,但没有观察到任何变化。
现在让我如何Strict-Transport-Security max-age
在 Nginx 中找到默认值以及如何有效地更改它。
答案1
Cloudflare 是世界其他地方看到的 TLS 终止端点。因此,它设置了 HSTS 标头。Cloudflare 会忽略源 HSTS 标头。
您需要修改Cloudflare控制面板中的HSTS设置。
答案2
我的 webApp 是由 ASP.net core 制作的,当在 startup.cs 中启用 HTTPS 时,HSTS 的默认值为 30 天。这使得 nginx 配置被视为重复,并且分析器中出现一些错误。