我正在尝试在我的服务器上配置 HSTS。我注意到,如果我通过初始未加密的 HTTP 连接发送 HSTS 标头,SSLLabs.com 上的测试会告诉我 HSTS 已启用。但是,这违反了 RFC-6797 第 7.2 节中的 HSTS 规范,该规范明确指出您不应通过未加密的连接发送此标头。
另一方面,如果我的服务器仅在执行从 HTTP 到 HTTPS 的 302 重定向后才发送该 HSTS 标头,这正是官方 HSTS 规范所说的你应该做的,那么 SSL Labs 不会承认我启用了 HSTS。
那么我在这里错过了什么?执行此操作的实际正确方法是什么?
如果你想看看我在说什么,有问题的网站是 nightowlcircusarts.com
您可以通过以下 bash 命令使用 curl 查看未加密的标头:
curl -I http://www.nightowlcircusarts.com/
或者将该 http 更改为 https 以查看加密的标头:
curl -I https://www.nightowlcircusarts.com/
目前,我将其配置为仅通过 TLS 发送该标头,而不是没有它,正如 HSTS 规范所说的那样。但是您会看到 SSL 实验室测试仍然显示我没有启用 HSTS: https ://www.ssllabs.com/ssltest/analyze.html?d=nightowlcircusarts.com