域名加入HSTS Preload List的方法和介绍

介绍

最近HTTPS越来越流行了,我的网站也转到HTTPS+HTTP/2了。转到HTTPS之后,一般情况下,Chrome会记住网站是不是支持HTTPS的,如果支持会默认访问HTTPS。同时我们也会在自己的网站上设置非HTTPS直接跳转到HTTPS

但不是所有浏览器都支持直接转到HTTPS,这时我们就需要定义一个HTTP的响应头,告诉浏览器记住我们的设置,在打开网页时,直接跳转到HTTPS。比如,在Apache下,其格式如下。

Apache
<IfModule mod_headers.c>
Header set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" env=HTTPS
</IfModule>

这样的话,就是告诉浏览器如果是HTTP访问的话,直接本地307转到HTTPS访问,而不先用HTTP访问访问网站然后再跳转。

我们光加了这个还有一点点不行,因为客户如果是第一次访问,如果没有使用HTTPS协议的浏览器是不会自动跳转的。所以我们得把我们的域名加到HSTS Preload List里去。HSTS Preload List是把一些域名直接编译到浏览器里,让浏览器在访问这些域名时不进行HTTP访问,而是直接307转到HTTPS访问。

目前,Chrome、Firefox、IE Edge、Opera都是使用同一个HSTS Preload List。所以我们提交一个就行。

要加入HSTS Preload List,其要求如下。

  • 所有域名以及子域名都支持HTTPS访问。
  • 主域名HTTP访问以301跳转到HTTPS页面。
  • HTTPS的头部要有Strict-Transport-Security的定义

申请方法

HSTS Preload List的申请网站如下:

https://hstspreload.org/

在这个网站申请成功之后,会进入审核期,大概一周左右会审核完。审核完成之后,大概要几个月的时间才会反应到浏览器。

Chrome里,我们可以在地址栏里输入以下内容,然后再查询是否已经编译到了浏览器。

chrome://net-internals/#hsts

在Chrome 62里,查询菜单是Query HSTS/PKP domain,输入你要查询的域名,然后点Query就行。如果已经编译到浏览里的话,下面的部分应该有值。我的域名还没有编译到浏览器,所以查询结果如下:

static_sts_domain: 
static_upgrade_mode: UNKNOWN
static_sts_include_subdomains: 
static_sts_observed: 
static_pkp_domain: 
static_pkp_include_subdomains: 
static_pkp_observed: 
static_spki_hashes:

要注意的地方

一旦提交成功并编译到浏览器里之后,别人就不能再访问你的HTTP站点。因为浏览器在本地已经直接转为HTTPS访问了。

需要HTTPHTTPS同时能访问的站点,最好不要申请HSTS Preload List。当然申请好的域名也可以申请取消。但所需要时间和申请HSTS Preload List差不多。

转载请注明:宇托的狗窝 » 域名加入HSTS Preload List的方法和介绍

发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址