gpt4 book ai didi

http - 为什么 SSL Labs 测试说在通过 HTTP 发送 header 时启用了 HSTS,但在通过 HTTPS 发送时却没有?

转载 作者:太空宇宙 更新时间:2023-11-03 14:05:16 24 4
gpt4 key购买 nike

我正在尝试在我的服务器上配置 HSTS。我注意到,如果我通过初始未加密的 HTTP 连接发送 HSTS header ,SSLLabs.com 上的测试会告诉我 HSTS 已启用。然而,这违反了根据 RFC-6797 第 7.2 节的 HSTS 规范,该规范明确规定您不应通过未加密的连接发送此 header 。

另一方面,如果我的服务器仅在执行从 HTTP 到 HTTPS 的 302 重定向后才发送 HSTS header ,这正是官方 HSTS 规范所说的你应该做的,那么 SSL Labs 不会承认我有 HSTS启用。

那么我在这里缺少什么?执行此操作的实际正确方法是什么?


如果你想看看我在说什么,有问题的网站是nightowlcircusarts.com

您可以通过以下 bash 命令使用 curl 查看未加密的 header :

curl -I http://www.nightowlcircusarts.com/

或者将 http 更改为 https 以查看加密的 header :

curl -I https://www.nightowlcircusarts.com/

目前,我将它配置为仅通过 TLS 发送该 header ,而不是没有它,正如 HSTS 规范所说的那样。但是您会看到 SSL Labs 测试仍然说我没有启用 HSTS: https://www.ssllabs.com/ssltest/analyze.html?d=nightowlcircusarts.com

最佳答案

首先,ssllabs 不会扫描未加密连接上的站点 - 仅扫描加密连接 (https) 上的站点。所以它不会告诉你你已经在 http 上启用了它。

您的问题是 nightowlcircusarts.com 和 www.nightowlcircusarts.com是两个不同的站点,您只在后者上设置它,但在前者上扫描它:

现在扫描结果确实在底部显示裸域确实重定向到 www 版本,但 ssllabs 的任务是测试 SSL/TLS 连接(发生在重定向之前),因此它故意不遵循重定向和而是报告 SSL/TLS 连接配置。它希望您单独扫描重定向站点 - 正是针对像这样的用例,您以不同的方式设置它!

我想当你“通过初始未加密的 HTTP 连接发送 HSTS header ”时,你实际上在做的是在任何地方(包括通过 https 的裸域)设置它,这就是你认为它的原因当你这样做时“有效”。

通过 https 到 https 重定向设置 HSTS 是允许的(也是预期的!)。事实上,您的具体示例已涵盖 in the RFC in section 11.4.1 .

顺便说一句,将 HSTS 添加到裸域是最佳实践,但请确保您的整个域仅通过 https 提供服务。如果您有一个子站点(例如 blog.example.com),或者也将其用于尚未保护的非公共(public)站点(例如 intranet.example.com),那么这可能会导致问题。在这种情况下,您可以将 HSTS 添加到裸域但不使用 includeSubdomain 选项 - 尽管这不会为您提供 HSTS 的全面保护。

最后,如果检查站点的各种安全 header 而不是 SSL/TLS 配置,那么 https://securityheaders.io是一个很棒的站点,并且比 ssllabs 执行的整套 SSL/TLS 测试运行起来要快得多:

请注意,这两个站点会检查不同的内容,因此我们不能替代另一个站点(两者都是忠实粉丝!),但两者都显示了一些设置(HSTS 和 HPKP)。虽然在这个问题上要非常小心 HPKP(我不是粉丝,也不认为它应该被广泛使用)。

关于http - 为什么 SSL Labs 测试说在通过 HTTP 发送 header 时启用了 HSTS,但在通过 HTTPS 发送时却没有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43133403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com