ZeroSSL自动续期泛域名证书

常见技术问题

刘宇帅 1704 0 11月前

文章内容

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 脚本实现全链路完全自动化。

专栏信息

常见技术问题
作者 刘宇帅
发布时间 11月前
阅读量 1704
评论数 0

摘要


暂无评论~

更多专栏文章

idea 提示 the file size exceeds the configured limit .Code insight features are not avaliable

在 IntelliJ IDEA 中,提示 “the file size exceeds the configured limit. Code insight features are not available” 表示当前文件的大小超出了 IDEA 的默认限制,因此无法启用代码自动提示、语法高亮等功能。默认文件大小限制为 2.5 MB。 解决方法 方

查看文章

ProxySQL详解

ProxySQL 是一个高性能、高可用性的 MySQL 代理,旨在为 MySQL 数据库提供负载均衡、读写分离、故障转移、查询缓存等高级功能。它通过在客户端和 MySQL 服务器之间充当中间层,实现对数据库连接和查询的智能管理,从而提升整体系统的性能和可靠性。

查看文章

git仓库迁移方法

迁移 Git 仓库是一个常见需求,尤其是在更换代码托管平台(如从 GitHub 迁移到 GitLab,或从本地仓库迁移到远程仓库)时。以下是几种常见的 Git 仓库迁移方法,具体使用哪种方法取决于你需要保留的内容(如历史记录、分支、

查看文章

Base64详解

Base64 是一种常用的编码方式,用于将二进制数据转换为ASCII字符,以便在文本环境中安全地传输和存储。由于许多传输媒介(如电子邮件、HTTP协议)对二进制数据有特定的限制或处理方式,Base64提供了一种可靠的方法来确保数据在这些环境中的完整性和可读性。

查看文章

Maven setting.xml 详解

一、什么是 settings.xml settings.xml 是 Maven 的配置文件,用于定义用户级别或全局的构建配置。它包含了对 Maven 构建过程影响较大的设置,如: 本地仓库的位置 远程仓库的镜像 代理服务器配置 认证信息(如私有仓库的用户名和

查看文章