Contents
  1. 1. 申请阿里云的AccessKey
    1. 1.1. 登陆,进入AccessKey管理
    2. 1.2. 安全提示
    3. 1.3. 子账户创建
    4. 1.4. 主账户创建AccessKey
  2. 2. 安装acme.sh
  3. 3. 配置AccessKey ID和AccessKey Secret
  4. 4. 使用acme申请证书
  5. 5. Nginx配置证书
  6. 6. 自动续期
  7. 7. 更新acme.sh

申请阿里云的AccessKey

登陆,进入AccessKey管理

登陆阿里云账户,进入控制台

鼠标移动到 右上角,你的头像上,出现的下拉菜单里找到 AccessKey管理

找到AccessKey管理

找不到的也可以 点击这里直达

安全提示

如果你是第一次使用 AccessKey管理 , 会有安全提示

安全提示

如果使用主账户创建AccessKey,将拥有该账户的全部权限

所以安全起见,推荐创建一个子账户进行后续操作

如果选 开始使用子账户AccessKey,进入 子账户创建 步骤

子账户创建

如果刚刚选了继续使用AccessKey,可以跳过次步

体验新版

确定

找到快速入口

创建用户

创建用户

如果,填写登录名、显示名称、勾选编程访问,点击确定,(可能需要短信验证,这里就不截图了)

创建子账户完成,会显示AccessKey IDAccessKey Secret,注意:只会显示一次,如果没保存,可以在用户管理里删除并重新创建AccessKey

找到授权

点击授权

找到新增授权

点击新增授权

新增授权

被授权主题里搜索刚刚添加的用户名(cer)找到后点击

系统策略里搜索’dns’,下面出现多个相关结果后,点击AliyunDNSFullAccess,确定

子账户授权完成

主账户创建AccessKey

如果使用了子账户的方式,请跳过本步

点击创建AccessKey

创建AccessKey

显示AccessKey

点击可以看见AccessKey IDAccessKey Secret,也可以点保存AK信息下载下来,注意:只会显示一次,如果没保存,可以删除后重新创建

安装acme.sh

1
2
apt update -y && apt install  -y curl cron socat
curl https://get.acme.sh | sh

将会安装到用户目录下的.acme.sh

配置AccessKey ID和AccessKey Secret

1
2
export Ali_Key="刚刚的AccessKey ID"
export Ali_Secret="刚刚的AccessKey Secret"

使用acme申请证书

1
~/.acme.sh/acme.sh --issue --dns dns_ali -d lmzg.com -d *.lmzg.com

--dns dns_ali是指使用阿里云的dns验证

-d lmzg.com是需要申请证书的域名,可以有多个-d,可以使用泛域名

大约需要2分钟

Nginx配置证书

这里以刚刚申请的lmzg.com的证书为例,请注意实际路径

1
2
3
4
5
6
7
8
9
server {
listen 443 ssl;
server_name www.lmzg.com lmzg.com;
root /wwwroot/lmzg/wwwlmzgcom;
ssl on;
ssl_certificate /root/.acme.sh/lmzg.com/fullchain.cer;
ssl_certificate_key /root/.acme.sh/lmzg.com/lmzg.com.key;
# 省略了其他配置
}

需要注意,ssl_certificate需要指定为fullchain.cer而不是lmzg.com.cer

自动续期

在前面的安装acme.sh步骤中,已经设置了定时续期,使用crontab -l 查看

1
2
3
4
5
6
7
8
11   0    *    *    * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
- - - - -
| | | | |
| | | | +----- 星期中星期几 (0 - 7) (星期天 为0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)

为了配合证书生效,需要重载Nginx才行,所以添加一个定时重载Nginx

进行crontab编辑 crontab -e

1
4 15 20 * * /usr/sbin/service nginx reload  > /dev/null

意思是每月20154分,将会重载一次Nginx,因为证书申请在19号,每月20日下午重载一次刚刚好,如果你懒得想那么多,每天执行一次就好了

1
36 3 * * * /usr/sbin/service nginx reload  > /dev/null

每天凌晨336分重载一次

关于阿里云的acme.sh泛域名申请到此结束

tips: 如果有CDN,还需要将证书推送到CDN服务器上,这个也可以用阿里云的接口实现自动化

更新acme.sh

acme.sh时候突然不能用了,可以考虑先更新一下

错误提示如:
It seems the CA server is busy now, let’s wait and retry….

1
~/.acme.sh/acme.sh --upgrade
Contents
  1. 1. 申请阿里云的AccessKey
    1. 1.1. 登陆,进入AccessKey管理
    2. 1.2. 安全提示
    3. 1.3. 子账户创建
    4. 1.4. 主账户创建AccessKey
  2. 2. 安装acme.sh
  3. 3. 配置AccessKey ID和AccessKey Secret
  4. 4. 使用acme申请证书
  5. 5. Nginx配置证书
  6. 6. 自动续期
  7. 7. 更新acme.sh