acme自动申请/更新证书并部署nginx,七牛
阿里云使用.acme.sh自动申请let’s encrypt证书并自动部署到nginx, 七牛,已经发送钉钉通知的详细记录
完整流程
acme.sh的完整重新申请证书的完整流程如下:
- 验证域名归属(域名在阿里云上, 所以这里使用阿里云的账户授权ak来验证域名归属, 也可以使用网站目录, 具体查看acme中文说明)
- 申请证书
- 部署nginx
- 部署七牛
- 发送钉钉机器人通知
前置条件
- 申请阿里云的账号资源授权用于域名归属验证(如果使用网站目录可跳过), 保存账号
AccessKey ID
和AccessKey Secret
备用 - 保存七牛密钥
AccessKey/SecretKey
备用 - 申请钉钉机器人,指定鉴权为关键字, 保存机器人URL和指定的关键字备用
准备工作
- 安装最新acme.sh, 该文档使用的版本是
v3.0.8
- 命令行内
export
上述备用的变量,用于命令执行
export Ali_Key="<key>" ;阿里AccessKey ID
export Ali_Secret="<secret>" ;阿里AccessKey Secret
export QINIU_AK="<ak>" ;七牛AccessKey
export QINIU_SK="<sk>" ;七牛SecretKey
export QINIU_CDN_DOMAIN="cdn1.example.com cdn2.example.com" ;七牛需要部署的cdn域名, 多个域名空格分割
export DINGTALK_WEBHOOK='https://oapi.dingtalk.com/robot/send?access_token=b05ccexxxxx' ;钉钉机器人url
export DINGTALK_KEYWORD=acme ;钉钉机器人鉴权机器人
相关官方文档
user-aliyun-domain-api-to-automatically-issue-cert
deploy-your-certificate-to-qiniucom
set-notification-for-dingtalkcom
执行命令
相关官方文档查看: acme.sh说明
生成证书
# 使用let's encrypt服务生成证书
# 新版acme默认使用 ZeroSSL, 所以需要手动指定证书服务
# 需要先完成准备工作中相关的export
./acme.sh --server letsencrypt --issue \
--dns dns_ali -d *.example.com
如果提示可能是未正确保存阿里的key, 可以手动创建
account.conf
文件, 具体内容如下
# 日志文件
LOG_FILE="/root/.acme.sh/acme.sh.log"
#LOG_LEVEL=1
#AUTO_UPGRADE="1"
#NO_TIMESTAMP=1
SAVED_Ali_Key='<ali key>'
SAVED_Ali_Secret='<ali secret>'
部署nginx
# key-file, fullchain-file 后为nginx对应证书的文件名, 用于将证书覆盖在此位置
./acme.sh --install-cert -d *.example.com \
--key-file /etc/nginx/cert/test_ssl/_.example.com.key \
--fullchain-file /etc/ngxin/cert/test_ssl/fullchain.cer \
--reloadcmd "nginx -s reload"
部署七牛
# 需要先完成准备工作中相关的export
./acme.sh --deploy -d *.example.com --deploy-hook qiniu
执行完成后查看相应域名的https配置如果正在处理中说明配置成功
发送钉钉通知
# 需要先完成准备工作中相关的export
./acme.sh --set-notify --notify-hook dingtalk
执行成功后钉钉相应群内会收到测试信息, 表示钉钉配置成功
[acme]
Hello, this is a notification from acme.sh by test_webIf you receive this message, your notification works.
流程收尾
- 创建crontab定时任务, 添加如下指令
56 * * * * /root/.acme.sh/acme.sh --cron --home "/root/.acme.sh" > /dev/null
- 搞定, 完结收工.