域名如何开启HTTPS,HTTP/2以及HSTS

对于站长,配置域名的https, http/2以及hsts是家常便饭,之前的博客说过,这里使用免费的let’s encrypt来演示,环境是ubuntu18.04 + nginx,域名使用lijie.org,下面的命令替换成自己的域名即可。

一、开启https。

执行上述命令会提示:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
——————————————————————————-
1: No redirect – Make no further changes to the webserver configuration.
2: Redirect – Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you’re confident your site works on HTTPS. You can undo this
change by editing your web server’s configuration.
——————————————————————————-
Select the appropriate number [1-2] then [enter] (press ‘c’ to cancel):

这里选择2,按回车,剩下的问题按y,同意即可。

https就配置完成了,访问https://www.ssllabs.com/ssltest/,评分会的A,下面我们继续配置,让其得分到A+。

二、添加HTTP/2支持

找到并添加

按Ctrl + O保存,然后按Ctrl + X退出后,检查nginx配置文件是否正确

这样http/2配置基本完成,下面来提高http2的安全性。

依旧打开网站配置文件:

找到let’s encrypt替我们生成的下面的语句,前面添加#号将其注释掉:

另起一行,加入:

验证下http2是否生效,命令行输入:

从返回结果可以看到,http/2生效了。

三、添加HSTS支持

目前我们使用的https使用的是301转向,即用户先访问http://lijie.org,nginx收到请求后,将80端口的http请求通过301转向到443端口的https。为了避免301转向期间存在的有可能的安全漏洞,我们需要添加hsts功能,强制让浏览器直接访问443端口,而避免访问80端口的http。

编辑nginx配置文件:

在配置文件中找到并添加一行:

这样hsts就配置完毕了,但是用户第一次访问的时候还要301转向,否则看不到hsts的头部包信息,但是随后就不用了。为了避免这个问题,谷歌的chrome浏览器维持了一个开启hsts的网站列表,https://hstspreload.org,可以将自己的网站提交上去,其它的像是firefox,edge等浏览器也会参考此列表。

开始hsts后,再次访问https://www.ssllabs.com/ssltest/,网站域名的https评分会从A变为A+。

ssllabs.com/ssltest A+

Leave a reply:

Your email address will not be published.

Site Footer