ZeroSSL自动续期泛域名证书

常见技术问题 刘宇帅 1天前 阅读量: 6

ZeroSSL 是一个免费的数字证书颁发机构(CA),支持 ACME 协议,可以配合 acme.sh 完成证书的申请、安装和自动续期。

本文将教你如何配置 acme.sh 实现 ZeroSSL 的 泛域名证书自动续期,并包含常用 DNS 服务商的 API 配置方法。


一、准备工作

1. 安装 acme.sh

curl https://get.acme.sh | sh
source ~/.bashrc  # 或 source ~/.zshrc

2. 设置 ZeroSSL 为默认 CA

acme.sh --set-default-ca --server zerossl

3. 注册 ZeroSSL 账户

acme.sh --register-account -m you@example.com --server zerossl

二、通过 DNS 验证申请泛域名证书

example.com 为例,所需要的域名包括:

  • example.com
  • *.example.com

使用 DNS API 进行校验。

acme.sh --issue --dns dns_xxx -d example.com -d '*.example.com'

三、常用 DNS 服务商的 API 配置

按照您的 DNS 服务商,需要配置相应的 API 环境变量。

【Aliyun (AliDNS)】

export Ali_Key="<AccessKeyId>"
export Ali_Secret="<AccessKeySecret>"
  • 权限需要设置 RAM 用户并授予 AliyunDNSFullAccess

【DNSPod】

export DP_Id="<API ID>"
export DP_Key="<API Key>"

【Cloudflare】

export CF_Token="<APIToken>"
export CF_Account_ID="<AccountID>"
  • 在 Cloudflare 设置一个限权限 API Token(含 Zone:DNS Edit 权限)

【GoDaddy】

export GD_Key="<API Key>"
export GD_Secret="<API Secret>"

【Name.com】

export Namecom_Username="<username>"
export Namecom_Token="<API token>"

四、安装证书 + Nginx 重载

acme.sh --install-cert -d example.com \
  --key-file /etc/nginx/ssl/example.com.key \
  --fullchain-file /etc/nginx/ssl/example.com.pem \
  --reloadcmd "nginx -s reload"

默认情况下 acme.sh 会建立 crontab 任务实现自动续期。


五、自动续期机制详解

acme.sh 在安装时默认会设置一个 cron 任务,每天运行一次,检查是否有即将过期的证书(通常提前 30 天自动续期)。

检查是否已配置自动续期:

crontab -l

如果没有,可以手动添加定时任务:

0 0 * * * ~/.acme.sh/acme.sh --cron --home ~/.acme.sh > /dev/null

此外,只要你使用 --install-cert 安装过证书,它会在续期后自动执行 --reloadcmd 里的指令,比如 nginx reload。

你也可以手动触发续期:

acme.sh --renew -d example.com --force

六、查看状态

显示所有证书:

acme.sh --list

查看指定域名证书状态:

acme.sh --info -d example.com

结论

通过 acme.sh 配合 ZeroSSL 和 DNS API,我们可以完全自动地管理泛域名 SSL 证书的申请、安装和续期,极大地简化了 HTTPS 部署的细节。

如果需要支持多域名/自动分发部署,还可考虑搭配 Docker、K8s、CI/CD 脚本实现全链路完全自动化。

提示

功能待开通!


暂无评论~