常阳时光

申请 HSTS Preload List

一直以为只有 VPS 能配置 HSTS,囧。维基百科:HSTS 是 HTTP Strict Transport Security(HTTP严格传输安全)的缩写,是一套由互联网工程任务组发布的互联网安全策略机制。

HSTS 主要目的是为了解决 HTTPS 网站首次请求时因使用未加密的 HTTP 协议而存在被劫持的可能。HSTS 还有另外一层好处:增强网站的兼容性。

采用 HSTS 后,支持这个协议的浏览器会自动跳转到 HTTPS 页面,返回码为 307。而不支持 HSTS 的浏览器访问网站,则不会产生跳转,从而提高了兼容性。(比 301 强制跳转更温柔)

方法源自张戈博客:利用HSTS安全协议柔性解决全站HTTPS的兼容性问题

前提:网站能配置 https(最好已经配置上 https)、把 http 链接处理掉,改成相对链接(比如,http://cyhour.com 可以改成://cyhour.com)。以前的文章可以参考一下:DirectAdmin 安装 StartSSL 免费 SSL 证书

另,如果没有长期使用 https 打算的就不要折腾了。否则后果自负~

开启 HSTS(通用方法)

适合使用虚拟主机,或者不会折腾 WEB 软件。原理很简单,通过代码来新增响应头。将如下代码(仅适用 php)插入到网站根目录的 index.php 即可:

<?php header("Strict-Transport-Security: max-age=63072000; includeSubDomains; preload"); ?>

对于 WordPress,将代码插入 header.php 文件的 wp_head() 前面即可。

更多方法请参考张戈博客原文。

提交 HSTS Preload List 申请

方法很简单,打开地址:https://hstspreload.appspot.com/ (需要爬梯子),输入要提交的域名,『Check status and eligibility』,然后根据提示操作即可。

提交后会显示正在提交到 preload list。要等多久才能通过,我也不知道,反正我是申请了将近有一个星期了,还是 pending submission 状态中。

提交后直到批准,网站必须强制 301 跳转到 HTTPS,否则无法通过,批准后取消 301 跳转即可。


更新:20170126

不知道什么时候已经是 currently preloaded 状态了。

https://hstspreload.org/?domain=cyhour.com