一直以为只有 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
万一哪天不想用ssl了呢?
@河石子 那就得先申请取消 preload list ,再取消 ssl,否则网站就打不开了。
一旦加入preload list,子域名也跟着强制了,所以我只是简单的对主域名做了HSTS。
@瑾瑜 只对主域名 hsts?虚拟机也可以?
@老头 加入list的前提就是包含子域名。以后子域名就会被强制https。跟啥机没关系吧
你怎么会有这种错觉??!!
“一直以为只有 VPS 能配置 HSTS”
@kn007 不求甚解,不懂呗…
感觉你花好多时间在折腾博客上面
@fooleap 嗯,瞎折腾…
慎重啊,已经在名单中,现在想加个二级域名搞测试都要强制ssl,很麻烦
@木瓜园 测试无需二级域名啊,直接二级目录就好了,反正效果一样的。
@木瓜园 用泛域名就不怕了。。
@kn007 要花钱啊
我的一个域名就加入了这个 现在好了 全部强制https了
很醉啊
@Klose 嗯,支持 ssl 都会强制 https。回过头,如果不是想用 ssl,折腾这个干什么???
我倒是觉得没有很大必要要加入 加入也可以
@Klose 这就是萝卜青菜各有所爱的问题了~
我还没有加入https的大阵营。一看这个折腾起来也是不简单,索性不打算折腾了
@安满小站 对你来说应该不是难事。
我不出名的小站,应该不会有人打我的主意吧
@Unee Wang ISP 有可能会插播广告。
挺能折腾,手机下侧边那个 O 什么意思,呵呵。
@郑永 留过言就不是 o……
话说这个东西不知道搞了后的好处在哪里?
@旧梦-mrju.cn 文中好像说了一些吧?
这个喜欢就加,不喜欢就不加,看自己喽
@胡杨 世事本如此……
关于将所有 HTTP 流量重定向到 HTTPS,友情链接之类的也要https?
@钛客志 只要是站内的链接都要~
SSL在CDN上也是可以的~~表示我更多是在CDN~
@姜辰 嗯,在 CDN 上也可以,不过我是没试过。
话说过了一年有的付费使用了
@小萝博客 啥东西?
现在独立博客好流行HTTPS啊
@王东东 折腾成本不高嘛~
子域名受影响这个比较烦
@何先生 嗯,不过对目前的我来说没有影响,没有用子域名建站。
你已经被移出了,提示你配置错误
@杨景文 感谢提醒,已经重新提交。
@老头 哈哈哈,又得等三个月了,等真正部署到主流浏览器chrome firefox,至少是半年后了
@杨景文 这个无所谓了,原本都打算不折腾了,没太大作用。