目前本站已支持HSTS,请大家放心访问
大家好,这是我时隔很久后的技术类视频,今天我主要来讲一下如何配置HSTS,依然会在之前的nginx+mysql+php+httpd的基础上讲解,当然单个nginx和httpd的用户也可以参考这个教程,毕竟设置这个跟架构没有太大的关系。
本篇博客我会按照nginx和httpd分开来讲,亲测有效
事前准备:
要有一定的基础,HSTS这个东西只是一个可以配置也可以不配置的东西,不推荐新手死磕这个(当然也可以尝试)
- 你要有一个服务器,无论哪个云服务商的,只是一定要靠谱,不然跑路就惨了。
- 服务器上安装了nginx或者httpd(apache)
- 有一个ssl证书 可以见 官方教程如果想要申请Let's Encrypt's证书的话可以看我这篇文章
- (最好是一个centos7的系统,否则可能会因为各种奇怪的原因而出现问题,其他的系统需要确认自己有足够的基础,并且将这里面的yum转换成你的系统的管理器,本文章在centos7.9上亲测有效)
HSTS是什么?
这里尽量用简洁的话语来说明一下,可能有误
HSTS其实就是你在初次访问网站的时候的一个头文件,当你初次连接以后,电脑会把这个头文件缓存下来,回头访问的时候会自动跳转到https协议,而不用http协议,如果你不配置的话,电脑要先通过http协议联系到服务器,服务器再告诉电脑访问https协议的页面,所以更有利于安全
那么如何配置呢?(运用了设问的修辞手法)
请往下看
针对nginx
- 找到nginx对应的配置文件,一般centos的是
/etc/nginx/nginx.conf
- 编辑它
vi /etc/nginx/nginx.conf
按以下w - 滑倒最后面,并且添加以下的代码 注意:不要把代码加载任何大括号🔥中括号里,直接加在最后面就好了。
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
这段代码的意思就是添加一个头(add_header),名称叫Strict-Transport-Security,量就是后面的引号里的东西,这里的max-age是持续时间,以秒为单位,这里的秒数代表1年,你也可以设置2年甚至3年。
- 先按一下
esc
,然后输入:wq
,保存 - 重启
sudo systemctl reload nginx
这就是nginx的方法,检验方法放在后面一起说。
httpd(apache) 配置方法
其实两个都差不多
- 也是找到httpd对应的配置文件,一般centos的是
/etc/httpd/conf/httpd.conf
- 也是编辑它
vi /etc/httpd/conf/httpd.conf
按以下w - 也是滑倒最后面,并且添加以下的代码 注意:也是不要把代码加载任何大括号🔥中括号里,直接加在最后面就好了。
注意:这里的代码不同了
LoadModule headers_module modules/mod_headers.so
Header always set Strict-Transport-Security "max-age=31536000; includeSubdomains; preload"
第一行代码是加载mod_header库,我其实也没试过不加载会咋样,但是加了也没问题
第二行代码是一样的意思,照顾以下跳着看的同学,我复制了一份过来
这段代码的意思就是添加一个头(Header always set),名称叫Strict-Transport-Security,量就是后面的引号里的东西,这里的max-age是持续时间,以秒为单位,这里的秒数代表1年,你也可以设置2年甚至3年。
- 先按一下
esc
,然后输入:wq
,保存 - 重启
sudo systemctl reload httpd
检测方法
- 电脑端按住F12,进入调试界面。
- 选择网络
- 按住CTRL+R刷新界面
- 然后会出现你网站的域名,点进去
- 找到
strict-transport-security
,后面的值是max-age=63072000(秒数可以随便调整); includeSubdomains; preload
就成功启用了
好的!恭喜你成功弄完了HSTS,你的网站又安全了一点。
Lawrence's Blog - 成功没有捷径