本站域名已提交至HSTS预载列表

虽然本站使用HTTPS,但是仍然需要HTTP来将请求重定向到HTTPS。这是因为没有访客会主动在域名前加上“https://”。可是这样不仅有安全隐患,同时也影响了网站的加载速度。

因此,HSTS(HTTP Strict Transport Security 中文:HTTP严格传输安全)应运而生。它可以让浏览器强制使用HTTPS访问,只需在网站头部(head)加入Strict-Transport-Security字段,以NGINX为例:

add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";

它的意思就是在63072000秒(2年)内,浏览器都将对这个域名及其所有子域名,强制使用HTTPS进行请求。

但是,即使这样还是有一个问题。那就是浏览器在访问一个新的网站的时候,不知道他的头部有没有HSTS,只有在浏览器访问了之后才会知道,所以第一次访问还是得用HTTP,从第二次开始才强制HTTPS。这样还是有安全隐患,还是会影响速度。

难道就没有解决办法了吗?

当然不是!接着就该本次的主角HSTS Preload List(HSTS预载列表)登场了!它对此的解决方法简单粗暴,就是直接把使用HSTS的域名写进浏览器里面!当用户使用HTTP请求访问一个域名时,浏览器会先将域名和内置的列表进行比对,如果域名包含在列表中,直接强制HTTPS访问。这样就解决了之前需要通过一次HTTP跳转访问之后,才能生效HSTS的问题。消除了安全隐患,也提升了网站加载速度。

将域名提交至预载列表很简单,只需访问HSTS Preload List Submission,然后根据要求进行提交就行了。不过从提交到域名写入浏览器,是需要一段时间的,不是立即生效。同样,如果哪天想把域名从列表删除,也是要等待的。三思而后行!