使用acme.sh申请aliyun平台的AccessKey,申请免费泛域名证书
申请阿里云的AccessKey
登陆,进入AccessKey管理
登陆阿里云账户,进入控制台
鼠标移动到 右上角,你的头像上,出现的下拉菜单里找到 AccessKey管理
找不到的也可以 点击这里直达
安全提示
如果你是第一次使用 AccessKey管理 , 会有安全提示
如果使用主账户创建AccessKey,将拥有该账户的全部权限
所以安全起见,推荐创建一个子账户进行后续操作
如果选 开始使用子账户AccessKey,进入 子账户创建 步骤
子账户创建
如果刚刚选了继续使用AccessKey,可以跳过此步
选 确定
选 创建用户
如果,填写登录名、显示名称、勾选编程访问,点击确定,(可能需要短信验证,这里就不截图了)
创建子账户完成,会显示AccessKey ID
和AccessKey Secret
,注意:只会显示一次,如果没保存,可以在用户管理里删除并重新创建AccessKey
点击授权
点击新增授权
被授权主题里搜索刚刚添加的用户名(cer)找到后点击
系统策略里搜索’dns’,下面出现多个相关结果后,点击AliyunDNSFullAccess
,确定
子账户授权完成
主账户创建AccessKey
如果使用了子账户的方式,请跳过本步
创建AccessKey
点击可以看见AccessKey ID
和AccessKey Secret
,也可以点保存AK信息下载下来,注意:只会显示一次,如果没保存,可以删除后重新创建
安装acme.sh
1 | apt update -y && apt install -y curl cron socat |
将会安装到用户目录下的.acme.sh
配置AccessKey ID和AccessKey Secret
1 | export Ali_Key="刚刚的AccessKey ID" |
注册
1 | ~/.acme.sh/acme.sh --register-account -m 你的邮箱 |
使用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 | server { |
需要注意,ssl_certificate
需要指定为fullchain.cer
而不是lmzg.com.cer
自动续期
在前面的安装acme.sh
步骤中,已经设置了定时续期,使用crontab -l
查看
1 | 11 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null |
为了配合证书生效,需要重载Nginx才行,所以添加一个定时重载Nginx
进行crontab
编辑 crontab -e
1 | 4 15 20 * * /usr/sbin/service nginx reload > /dev/null |
意思是每月20
日15
时4
分,将会重载一次Nginx,因为证书申请在19号,每月20日下午重载一次刚刚好,如果你懒得想那么多,每天执行一次就好了
1 | 36 3 * * * /usr/sbin/service nginx reload > /dev/null |
每天凌晨3
时36
分重载一次
关于阿里云的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 |