MENU

如何给自己的网站添加HSTS

February 28, 2020 • 建站狂魔,网络阅读设置

什么是HSTS

HSTS("HTTP Strict Transport Security” HTTP严格安全传输)是一种响应头,像这样

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload;

他可以防止你的网站在第一次http请求中被劫持,导致无法正常访问。


本来我想图方便,直接让七牛将HSTS部署在他的边缘节点上,然后去面板里逛了一圈,发现这面板里没有这个设置,甚至连tls允许版本都没有,明明隔壁又拍云都有(小声bb)
没办法,联系客服也只能做到开HSTS,而且怎么整都只有30天

于是,只能自己动手了


这里我们主要说Nginx的配置,只需要给nginx添加一行headers规则就好了
在nginx.conf末尾添加

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

max-age代表缓存HSTS头的时间,这里是一年(以秒为单位)
includeSubdomains代表为子域名开启HSTS
preload代表预加载到浏览器缓存


申请Preload List

有HSTS头已经能很大程度上的避免被劫持,但是缺点是需要正常访问一次才能缓存HSTS头,如何做到不需要访问一次,让浏览器自动强制使用HTTPS呢?
当然,是有的,Preload list是一个由 Google Chrome 维护,Chrome、Firefox、Safari、IE 11 和 Microsoft Edge 都在遵从的HSTS域名列表
如果要想把自己的域名加进这个列表,首先需要满足以下条件:

拥有合法的证书(如果使用 SHA-1 证书,过期时间必须早于 2016 年);

    将所有 HTTP 流量重定向到 HTTPS;

    确保所有子域名都启用了 HTTPS;

    输出 HSTS 响应头:

        max-age 不能低于 18 周(10886400 秒);

        必须指定 includeSubdomains 参数;

        必须指定 preload 参数;

如果全部都已经完成了的话,就可以去HSTS Preload List申请,但是周期可能会很长,因为是人工审核,目前本站也在申请中,成功了的话我会回来更新文章,写写经验

Archives 文章海报
Tip
:D 获取中...
QR Code for this page
Tipping QR Code
Leave a Comment

3 Comments
  1. 换vip.qq.com邮箱,我就不信腾讯还把我扔垃圾箱

  2. 知道了,怪不得myssl给你的估评是A+,下次一定

    1. @幻焕最后TLSv1.3七牛云还是没给我开233333,应该不是A+