HSTS强制HTTPS的具体配置步骤

12 人参与

哎呀,说到HSTS这个玩意儿,我可太有发言权了!去年我的小博客就是因为没配置HSTS,被一个客户吐槽说访问时偶尔会跳到不安全的页面,当时真是尴尬得想钻地缝。不过现在好了,经过一番折腾,我的网站已经妥妥地实现了HTTPS强制跳转,今天就和大家唠唠具体怎么操作。

先搞清楚HSTS是什么鬼

说白了,HSTS就是告诉浏览器:”以后访问我这个网站,必须用HTTPS,别给我整那些HTTP的幺蛾子!”这招特别管用,能防止那种从HTTPS被降级到HTTP的攻击。我当初就是被这种”降级攻击”坑过,用户明明输入的是https,结果莫名其妙变成了http,简直气死人。

Nginx配置超简单

我用的是Nginx服务器,配置起来真的不要太简单。就在你的server配置块里加上这么一行:

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

看到没?就这一行代码,搞定!max-age设置成31536000秒,也就是一年,意思是告诉浏览器在接下来的一年里都得用HTTPS访问。includeSubDomains是说所有子域名也要遵守这个规矩,preload是准备加入到浏览器的预加载列表里。

Apache也不难

用Apache的小伙伴也别急,你们只需要在.htaccess文件或者虚拟主机配置里加上:

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

记得要确保mod_headers模块是启用的哦,不然这配置可不生效。我有个朋友就是忘了启用模块,折腾了半天才发现问题所在。

别忘了申请预加载

这个preload标志可不是摆设,你得主动去hstspreload.org提交你的域名。这个过程需要一点耐心,因为审核可能需要几周时间。但是一旦通过,你的域名就会被硬编码到浏览器里,用户第一次访问就会强制HTTPS,简直完美!

测试配置是否生效

配置完别忘了测试!打开浏览器开发者工具,在Network标签里查看响应头,如果能看到Strict-Transport-Security这个头,那就说明配置成功了。我第一次配置时就犯了个低级错误,把代码写错了位置,结果死活不生效,后来才发现是语法问题。

说实话,配置HSTS之后,我的网站访问量不降反升,因为用户看到那个小绿锁更有安全感了。而且搜索引擎也更喜欢安全的网站,这对SEO也有好处。现在想想,当初那点折腾完全值得!

参与讨论

12 条评论
  • 机智的海豚

    这个教程太实用了,收藏!

  • 落花时节

    nginx配置原来这么简单,学到了👍

  • 沉睡的预言者

    请问preload提交后要等多久?

  • 打酱油

    max-age设成一年会不会太长了?

  • Masonry

    Apache用户表示很需要这个教程🤔

  • 永恒观察者

    博主分享的经历太真实了,我也遇到过类似问题

  • 椒图闭

    测试方法很实用,马上试试看

  • 鬼泣歌

    hstspreload.org这个网站打开好慢啊

  • 小寒风冽

    配置完确实感觉网站安全多了

  • 铜喇叭

    小绿锁对SEO有帮助这点很关键

  • 笔走龙蛇

    为啥我的配置一直不生效,急死人了

  • 小兔兔兔

    博主文风好有趣,看技术文章都不枯燥了