SSL免费证书自动续期(acme.sh, DNS API方式)
参考文档
- https://github.com/acmesh-official/acme.sh?tab=readme-ov-file#-usage-guide
- https://github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_ali
- https://github.com/acmesh-official/acme.sh/wiki/Server
安装acme.sh
# 下载并执行,脚本会做三件事
## 1. 复制acme.sh到~/.acme.sh/,所有的certs也会在这个文件夹中替换;
## 2. 创建别名: acme.sh=~/.acme.sh/acme.sh;
## 3. 创建一个每日调度计划,可使用crontab -l查看;
wget -O - https://get.acme.sh | sh -s email=your@example.com
# 国内主机可多尝试两次,不行的话直接使用下边的方式
## git clone https://gitee.com/neilpang/acme.sh.git
## cd acme.sh
## ./acme.sh --install -m my@example.com
# 重新载入.bashrc使别名生效
source ~/.bashrc
DNS API配置
需 DNS 服务商支持 API 访问,我们可以使用域名解析商提供的 API 自动添加 TXT 记录,且在完成验证后删除对应的记录。至于哪些服务商支持可以查看【https://github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_ali】
# 这里以阿里云为例
# 登录阿里云,查找并进入【访问控制RAM】
# 身份管理-用户-创建用户
## 填写"登录名称",勾选"使用永久 AccessKey 访问",确认
## 复制保存"AccessKey ID"和"AccessKey Secret"(注意 AccessKey Secret 仅在确认验证后弹窗中出现一次),后续会使用到
## 为用户添加授权"AliyunDNSFullAccess"
申请证书(DNS API方式)
# 添加环境变量
export Ali_Key="your AccessKey ID"
export Ali_Secret="your AccessKey Secret"
# 申请证书
## 如果是腾讯云,使用`dns_dp`;华为云使用`dns_huaweicloud`。具体参数可查阅acme.sh文档
## acme.sh会将刚才export的两个值持久化到~/.acme.sh/account.conf
## 如果需要指定CA服务商,可使用'--server'参数或者直接设定默认CA
### acme.sh --set-default-ca --server letsencrypt
acme.sh --issue --dns dns_ali -d your-site.com -d *.your-site.com
安装证书
# acme.sh执行'--install-cert'后会将各参数转换为配置行保存到your-site.com_ecc/your-site.com.conf文件中
# `--key-file`: 对应Nginx配置中的 `ssl_certificate_key`
# `--fullchain-file`: 对应Nginx配置中的 `ssl_certificate`
# `--reloadcmd`: 证书更新后,该命令会自动通知Docker中的Nginx重新加载配置,实现无感更新
acme.sh --install-cert -d your-site.com \
--key-file /root/app/docker/nginx/certs/your.key \
--fullchain-file /root/app/docker/nginx/certs/your.crt \
--reloadcmd "docker compose -f /root/app/docker-compose.yml exec nginx nginx -s reload"
验证
# 查看自动续期定时任务
crontab -l
# 查看证书信息
acme.sh --info -d your-site.com
# 测试强制手动续期
acme.sh --renew -d your-site.com --force
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 归园田居 的博客!
评论
正在加载评论...
