如何在我的网站中实施 HSTS

How to implement HSTS in my website

我有一个网站(来自 godaddy 的域并托管在 hostgator 中)。当我手动更新证书时,我可以将我的网站重定向到 https,但它总是从 google 搜索转到 http。在网上搜索后,我了解到 Considering Strict-Transport-Security: max-age=15768000 as result of curl -i -L on target domain 将满足我的需要,因为它会强制浏览器以 https 打开网站。但我对如何在我的网站上实现这一点感到困惑。

谁能帮我解决这个问题?

不确定这是否适合 Stack Overflow。再说一次,它涵盖的主题太多,以至于它也不太适合任何其他 Stack Exchange 站点。所以无论如何都会尝试回答。

重定向。

“我可以将我的网站重定向到 https”是什么意思?您应该将您的网站重定向到 https,现在您已经完成了设置的麻烦,您在做吗?还是您可以同时访问 http 和 https?如果是这样,请了解如何强制使用 https,即使用户设置了 http。

这是在您的网络服务器上设置的重定向规则。不确定您是否可以直接访问您的配置(例如,如果使用 Apache,则为 .htaccess 文件)还是需要您的主机提供商为您设置。

Google 搜索

关于 Google 搜索,设置重定向后,Google 需要一些时间来识别并更新其搜索索引中的链接以显示 https 版本页数。

说有一些方法可以告诉Google这件事以加快进程:

  • 您是否强制重定向到 https?如果不是,Google 将根据多种因素决定显示哪个站点(http 或 https)。
  • 您有站点地图吗?您是否已将这些链接更新为 https?
  • 您是否在任何页面的 HTML 中设置了 rel="canonical" 并且是否设置为 https 版本?这告诉 Google 页面的真实版本,例如,如果您同时允许页面的 http 和 https 版本(不推荐)。
  • 您是否使用 Google Search Console 注册了您网站的 https 版本?如果是这样,那里有任何错误吗?您也可以在这里发起 re-index 请求。
  • 您是否将所有内部链接都设置为 https,或者最好是相对链接。
  • 能否将任何外部链接更新为 https 而不是 http。

HTTP 严格传输安全 (HSTS)

这是一个高级主题,因此在您进一步了解之前不推荐它。基本上它是一个 HTTP Header 你通过 https 发回你的网页告诉网络浏览器“嘿我是一个 https-only 网站。从现在开始,自动将任何 http 请求自动转换为 https 之前你甚至把它们发给我"。

这是 重定向之上的一个很好的安全补充,但至关重要的是它 不会取代 对重定向的需要。重定向需要先到位才能将其发送到 https,此时您的 Web 服务器可以发送 HSTS HTTP Header(浏览器将对其进行缓存,以便它知道下次更改为 HTTPS)。

要设置它,您需要像这样发送一个 HTTP Header(但只能通过 https 请求)。

Strict-Transport-Security "max-age=16070400"

这可以在您的网络服务器中设置,或者在您的 php 文件中设置,或者您可以通过任何其他方式发送 HTTP Headers。

请注意,我们会阻止您的网站通过 http 访问,因此如果您出于任何原因决定关闭 https,那么您基本上已经阻止了您的网站 max-age 任何已缓存该设置的浏览器的时间。

有关 HSTS 的更多信息,请参见此处: 301 Redirect and HSTS in .htaccess

但我真的不认为这就是您在这里寻找的东西。它告诉网络浏览器(如 Google Chrome)强制使用 https 并且与搜索引擎(如 Google 搜索)无关,因为目前,他们忽略了这个 Header .