Let's Encrypt 是一个由非营利性组织 互联网安全研究小组(ISRG)提供的免费、自动化和开放的证书颁发机构(CA)。

简单的说,借助 Let's Encrypt 颁发的证书可以为我们的网站免费启用 HTTPS(SSL/TLS) 。

Let's Encrypt免费证书的签发/续签都是脚本自动化的,官方提供了几种证书的申请方式方法,点击此处 快速浏览。

官方推荐使用 Certbot 客户端来签发证书,这种方式可参考文档自行尝试,不做评价。

参考安装

https://www.cnblogs.com/esofar/p/9291685.html

https://github.com/Neilpang/acme.sh

安装 acme.sh

curl https://get.acme.sh | sh

微信图片_20190322133105.png

整个安装过程进行了以下几步,了解一下即可:

  1. 把 acme.sh 安装到当前用户的主目录$HOME下的.acme.sh文件夹中,即~/.acme.sh/,之后所有生成的证书也会放在这个目录下;

  2. 创建了一个指令别名alias acme.sh=~/.acme.sh/acme.sh,这样我们可以通过acme.sh命令方便快速地使用 acme.sh 脚本;

  3. 自动创建cronjob定时任务, 每天 0:00 点自动检测所有的证书,如果快过期了,则会自动更新证书。

安装命令执行完毕后,执行acme.sh --version确认是否能正常使用acme.sh命令。

如有版本信息输出则表示环境正常;如果提示命令未找到,执行source ~/.bashrc命令重载一下环境配置文件。

整个安装过程不会污染已有的系统任何功能和文件,所有的修改都限制在安装目录~/.acme.sh/中。

生成证书

据 acme.sh 官方文档介绍,其实现了 acme 协议支持的所有验证协议,一般有两种方式验证:http 和 dns 验证。

也就是我们有两种选择签发证书,这里我直接选择 http 验证方式,另外一种方式本篇不做介绍,可参考文档自行尝试。

签发证书也很简单,但是必须保证在这台服务器上nginx已经配置能访问了下面这些网址,以此证明服务器拥有这些域名的权限,一条命令:

acme.sh --issue -d zhongguomayun.com -d www.zhongguomayun.com -d api.zhongguomayun.com -d static.zhongguomayun.com -d m.zhongguomayun.com -w /code/coding/zhongguomayun/public

简单解释下这条命令涉及的几个参数:

  • --issue是 acme.sh 脚本用来颁发证书的指令;

  • -d--domain的简称,其后面须填写已备案的域名;

  • -w--webroot的简称,其后面须填写网站的根目录。

证书签发成功会有如下输出:

2.png

3.png

从截图看出,生成的证书放在了/root/.acme.sh/zhongguomayun.com目录。

另外,可以通过下面两个常用acme.sh命令查看和删除证书:

Copy# 查看证书列表acme.sh --list 
# 删除证书acme.sh remove <SAN_Domains>

至此,证书就下载成功。

安装证书

生成的证书放在了/root/.acme.sh/zhongguomayun.com目录,因为这是 acme.sh 脚本的内部使用目录,而且目录结构可能会变化,所以我们不能让 Nginx 的配置文件直接读取该目录下的证书文件。

正确的做法就是使用--installcert命令,指定目标位置,然后证书文件会被 copy 到相应的位置。

一条命令即可解决:

acme.sh –installcert -d zhongguomayun.com \

> –key-file /usr/local/nginx/cert/zhongguomayun.com.key \

> –fullchain-file /usr/local/nginx/cert/fullchain.cer \

> –reloadcmd "/etc/init.d/nginx restart"

4.png

5.png

这里我将证书放到了/usr/local/nginx/cert/目录下。

最后一步就是,修改 Nginx 配置文件启用 ssl,修改完成后需要重启下 Nginx

新建配置api.zhongguomayun.com.conf

6.png