如何在 haproxy 中禁用 HSTS

如何在 haproxy 中禁用 HSTS

我有一个 haproxy-ssl-terminated (haproxy 1.5.8 2014/10/31, debian jessie stock) 测试网站,证书已过期。我希望能够在新证书到达时使用该网站,但 chrome 和 firefox 告诉我我已启用 HSTS。我查找了在 haproxy 中启用 HSTS 所需的内容,但在我看来,我的 中没有相关的行haproxy.conf。此外,我没有看到相关Strict-Transport-Security标头的任何痕迹,无论是使用 chrome/firefox 检查器还是使用 curl。

我使用时得到的标头curl --insecure -i https://....是:

Date: Mon, 02 Jul 2018 07:27:31 GMT
Server: Apache
Last-Modified: Fri, 29 Jun 2018 08:54:36 GMT
Vary: Accept-Encoding
Content-Type: text/html
X-Varnish: 296609
Age: 0
Via: 1.1 varnish-v4
ETag: W/"962f-56fc3ff5ab00b-gzip"
Transfer-Encoding: chunked
Connection: close
Accept-Ranges: bytes
Set-Cookie: ServerID=A; path=/
Cache-control: private

我如何才能暂时禁用 HSTS?我如何才能首先检测出启用 HSTS 的原因?

答案1

从您的curl输出中我们可以看到,目前没有标头。在 HAProxy 中,配置中Strict-Transport-Security应该有。http-response set-header Strict-Transport-Security ...

它一直在那里,可能在您将 HAProxy 置于 Web 服务器之前。那是在 HSTS 被设计为由浏览器缓存几秒钟之前max-age=。如果您在那里,例如max-age=31536000,它会被缓存一年,从最后一次出现标头开始计算。

RFC 6797 6.1.1。 max-age 指令

REQUIREDmax-age指令指定在接收到 STS 标头字段之后的秒数,在此期间 UA 将主机(从其接收消息的主机)视为已知 HSTS 主机。

您无法暂时禁用 HSTS通过删除标头从服务器端更新证书。您需要尽早更新证书,以便新证书在旧证书到期之前到达。更好的方法是:自动更新您的证书,例如Certbot对于让我们加密证书。

相关内容