前言

很多人想给自己的网站加上HSTS(HTTPS严格传输安全),但是配置过程经常出现报错,嘤该怎么办呢,这篇文章可能是目前互联网上最全的了(?),出这篇文章的目的是为了更多人少走弯路


何为 HSTS?

HTTP严格传输安全协议(英语:HTTP Strict Transport Security,简称:HSTS),是一套由互联网工程任务组发布的互联网安全策略机制。网站可以选择使用HSTS策略,来让浏览器强制使用HTTPS与网站进行通信,以减少会话劫持风险。其征求修正意见书文件编号是RFC 6797,发布于2012年11月。引用自百度百科

在开启了HSTS后,所有的资源都会以HTTPS方法加载,根治了“混合内容”,大大提高了网站的安全性,而且,当网站被劫持时(证书无效等错误),浏览器会在缓存内拒绝传输信息,确保网站绝对安全,对于不支持HTTPS的网站,开启HSTS会使网站无法访问。

HSTS请求头的值

粗体(Bold)为必须值
max-age 指定了HSTS请求头的缓存时间
include-subdomains 同时应用到子域名
preload 允许预加载(本文章会详细讲预加载)

配置HSTS

如果想要为一个网站加入HSTS,应该在服务器上进行请求头的配置,添加类似如下请求头:

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

配置方法
打开Nginx配置(Phpstudy在“设置”,宝塔在Nginx-配置修改,原生在nginx.conf)
定位到HTTP块,加入(网上很多教程都写着在Server块加入,站长亲测无效,这里注意一下)

include proxy.conf;
add_header Strict-Transport-Security $hsts_header;

定位到Server块上方,加入

map $scheme $hsts_header {
https "max-age=31536000; includeSubDomains; preload";
}

PS:里面的参数可以自由更改
保存你的配置文件,重启Nginx配置即可

预加载

正片开始(本文章的重点)
如果你的网站已经使用了HSTS,还想要提高速度并且变得更安全,那么预加载(Preload)对你来说非常有必要
预加载是一个网址列表,被加入到Chrome浏览器的源代码,其他的主流浏览器一般依据Chrome进行更新列表,目前大多数浏览器均支持本列表,包括Chrome、Firefox、Edge、IE11等浏览器,其他国产浏览器如360,列表随咕鸽而变化。在“Preload预加载列表中”的网址,只能通过HTTPS的方式访问,任何以HTTP的方式访问将会直接被浏览器跳转HTTPS,跳转失败则拒绝打开。
大多数人关心的还是“如何加入预加载”,我们会在下面说到

加入预加载的方法

在线检测

然后在网站中输入你的域名,回车,查看预加载状态


HSTSPRELOAD.ORG 检测
打开这个网站:https://hstspreload.org
然后在网站中输入你的域名,回车


解决好图中的问题就可以了,其中黄色的问题解决不解决都行,但是红色的必须要解决,解决完全部的即可出现一个申请的按钮,点击即可申请啦,一般申请之后两三天就能通过,长的最多几周,申请通过的效果:


协议:知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议
作者:MBRjun https://space.bilibili.com/411515003
来源:https://blog.mbrjun.cn/archives/90/
请转载时务必注明以上信息

Last modification:July 27th, 2020 at 03:02 pm
这对你而言没有什么...但是对我......好像也没有什么(滑稽)