2月份在“个人站长交流群”做了一个“你的网站是否启用https”的投票调研,投票结束后数据显示很多群友站长仍然在使用http。所以为了让大家网站更安全,我写一篇教程,教一下大家如何简单的使用宝塔获取免费ssl证书,给网站加密。已经是https如何加入HSTS减少一次301跳转的请求次数。
如何使用宝塔简单的开启https
我们根据正常的操作,安装宝塔面板,安装各种环境。这里就不写这些了,群里不少人已经用宝塔了。
我准备了一个网站未开启https,方便以图文方式演示给大家。
现在这个页面没有使用https。我们现在打开 宝塔面板后台->网站->该网站的设置->ssl->Let's Encrypt
只要点击“申请”宝塔就会自动申请上ssl证书并且部署到配置文件内。
此时去访问https就可以访问了。还可以看看证书的有效期。。Let's Encrypt的证书虽然只有3个月,但是不用担心,快到期了他会自动续签,有兴趣的可以去Let's Encrypt的官网看看,还能看到很多大佬赞助了这个非盈利性组织,同时也是几个大佬一起发起的项目。这是大佬的基操,勿6!
至此,你的网站已经可以使用https访问了。
我整理一下开启https需要注意的问题:
1.使用CDN加速网站的群友要注意CDN的收费事项,https一般没有免费的CDN,腾讯的CDN貌似有免费,还有国外的cloudflare(简称CF)
2.站内连接必须全部实现https,否则会出现一些奇怪的问题。例如像下面这样!谷歌浏览器干脆不提示了,给你安全连接,非https的全部都不请求。
强制HTTPS访问,并设置HSTS头
强制HTTPS访问只需要在ssl处点击“强制HTTPS访问”即可,这时访问http会发送301永久跳转到https。
设置HSTS头,参考资料HTTP Strict Transport Security (HSTS) and NGINX
在配置文件内添加下列代码:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
保存后重新再次访问http,就会生效了。再次访问http就会得到307响应,在浏览器内部就帮你切换到https了。
参数说明:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
这段代码主要参数add_header Strict-Transport-Security
添加一个Strict-Transport-Security
的响应头,max-age=31536000
里的31536000是之缓存多少秒,这个时间是1年。includeSubDomains
参数是指响应头应用限制适用于当前域名的所有子域名。always
是将所有响应都添加上HSTS响应头,这个参数必须在nginx1.7.5以上版本才会有效。
可以看看下一篇的:《网站开启TLS1.3,禁用TLS1.0,并用myssl检测安全等级。》 是针对本篇的一些补充和完善。
这教程就写到这吧。怕忘记了可以按下Ctrl+D添加到浏览器的收藏夹。