我应该使用 Let's Encrypt Certificates 激活 HSTS 吗?

信息安全 hsts 让我们加密
2021-08-16 10:33:52

我最近设置了一个 Web 服务器,其中包括为我的一些用户提供 ownCloud。我得到了 Let's Encrypt SSL 证书,因为我不想像 ownCloud 开箱即用那样使用自签名证书。我将 Apache 配置为将所有 HTTP 流量正确地重写为 HTTPS。

现在 ownCloud 不断向我显示一条消息,要求我强制执行 HSTS(HTTP 严格传输安全)。鉴于 Let's Encrypt 证书仅在 90 天内有效,并且我的 HTTP 重定向已经有效,我真的应该强制执行 HSTS 吗?

3个回答

是的,您应该激活HSTS

没有 HSTS 的 HTTPS 明显较弱,因为它使您的用户容易受到降级攻击发送 HSTS 标头可确保用户在首次访问(首次使用时信任)后通过 SSL 直接连接到您的网站,直到达到指定的超时时间。

是否激活 HSTS 的选择实际上并不取决于您使用的 CA,而不是您是否确定将来会继续支持 HTTPS。也就是说,一旦您再次禁用 HTTPS,任何 HSTS 超时尚未到期的用户都将无法连接到您的站点。如果您不确定您将保持 SSL 支持多长时间,您可能希望从较短的 HSTS 到期时间开始,以避免将您的访问者锁定太久。


不要将HSTSHPKP混淆:HTTP 公钥固定标头告诉浏览器将特定公钥与您的站点相关联。在这里,固定错误或过期的证书可能会使您的网站对以前的用户不可用。但是对于 HSTS,特定的证书链并不重要,您可以根据需要更改它。

只要您打算在您的网站上继续使用 HTTPS,您就可以使用 HSTS。特定证书可以更改,但这对于 HSTS 是可以接受的。

如果您使用 HTTP 密钥固定,您可以要求 SSL 密钥来自特定 CA(在本例中为 Let's Encrypt),如果您更改 CA,这可能会导致问题,但证书本身可能会更改。

如果您实施了一种自定义固定方法,该方法查看正在使用的特定证书,那么您就会遇到问题。但这不是标准标题的工作方式。

简而言之,证书定期更改应该没问题 - 这是预期的行为。

两项 - 确保您在进行任何身份验证之前通过 HTTPS 与 HTTP 进行通信。必须认真对待降级攻击的注意事项。- 根据您的技术堆栈,您可能需要查看的不仅仅是代码;os 网络加密协议也可能需要检查。

Qualsys的人们写了一篇很棒的文章