将网站应用从 HTTP 协议免费升级到 HTTPS
HTTPS 解决方案#
由于微信小程序要求后端 API 接口的合法域名必须是 HTTPS 协议,所以我们需要将之前上线的博客应用域名升级为 HTTPS 协议,要实现应用的 HTTPS 化,需要在服务器上安装 SSL 证书,理论上我们自己也可以颁发 SSL 证书,但是自己颁发的证书浏览器不认可,需要权威结构认证的才行。常见的 SSL 证书由国际顶级 CA 机构授权颁发,比如下面这几个:
虽然安全稳定有保障,但是它们都是收费的,而且价格不菲,对于小微企业或者个人开发者来说,难以承受,所以今天学院君要给大家介绍的是一个免费的解决方案 —— Let's Encrypt。
Let's Encrypt 是一个于 2015 年三季度推出的数字证书认证机构,旨在以自动化流程消除手动创建和安装证书的复杂流程,并推广使万维网服务器的加密连接(HTTPS)无所不在,为安全网站提供免费的 SSL/TLS 证书。
Let's Encrypt 由互联网安全研究小组(缩写 ISRG)提供服务,主要赞助商包括电子前哨基金会、Mozilla 基金会、Akamai 以及思科,所以安全可靠性上没什么问题。
综上,Let's Encrypt 是一个免费、简单、自动化、安全可靠的 HTTPS 解决方案。下面我们来介绍如何在服务器安装 SSL 证书,并且在博客应用访问上生效。
安装 SSL 证书#
为网站安装证书很简单,我们以上线 Laravel 博客应用的那台阿里云服务器作为演示环境,该环境使用的 Web 服务器是 Nginx,操作系统版本是 Ubuntu 18.04,我们将使用 Let's Encrypt 的客户端 Certbot 来自动化获取、部署和更新安全证书。首先访问 https://certbot.eff.org/ 选择自己的软件环境:
这样,在下面的「automated」Tab 页中就可以看到对应系统的安装使用指南了。接下来我们按照这个指南,登录到自己的服务器上执行对应的安装脚本安装 Certbot 客户端:
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-nginx
安装过程中,该直接回车回车,该选 Yes 输入 Y 回车。安装完成后,执行如下命令:
sudo certbot --nginx
执行这个命令时,Certbot 会先让你输入邮箱和同意协议,同意之后会自动检测 nginx.conf
下面的配置,把所有站点配置都列出来并让你选择哪个域名开启 HTTPS(输入列表编号,多个用空格分开):
输入编号后回车,我这里只有一个域名,输入 1
回车,Certbot 就会为你下载证书并更新对应的站点配置信息了。然后,还会让你选择是否在通过 HTTP 协议访问应用时强制重定向到 HTTPS,1
表示不重定向,2
表示重定向,我选择了重定向:
这个时候再次打开 /etc/nginx/sites-available/laravel-blog
站点配置,就可以看到 Certbot 为我们添加的额外配置信息了:
运行 service nginx reload
重启 Nginx,就可以通过 https://blog.laravelacademy.org
访问博客应用了:
是不是很简单?全程都是 Certbot 自动帮我们完成的。这样,我们就完成了将博客应用从 HTTP 协议升级到 HTTPS。
友情提示:启用 HTTPS 后,应用中之前配置或者写死域名的地方都要改成 HTTPS 协议。
自动更新证书#
由于 Let's Encrypt 默认的有效期是 90 天,所以如果你的应用需要在生产环境长期提供服务,还要在证书到期之后更新证书,我们可以通过 certbot renew
命令来更新证书,你可以通过如下命令来测试该命令是否生效:
sudo certbot renew --dry-run
如果在输出中看到如下字样,则表示生效:
当然,真实环境中通过手动维护是不现实的,我们可以借助 Crontab 来编写一个定时任务,每个月都强制更新一个这个证书,然后重启 Nginx:
0 0 1 * * certbot renew
5 0 1 * * service nginx restart
学院君注:Crontab 通过
crontab -e
命令编辑,通过crontab -l
查看。
这样,就完成了 SSL 安全证书无人值守式更新了。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: