轻量开源ACME客户端,自动签发和续期SSL/TLS证书,无依赖。

所在地:
美国
语言:
en
收录时间:
2026-08-27

核心定位

acme.sh 是一个纯 Shell 编写的 ACME 协议客户端,用于向 Let’s Encrypt、ZeroSSL 等证书颁发机构申请 SSL/TLS 证书,并实现自动化续期。整个工具不依赖 Python、Node.js 或其他运行时环境,在绝大多数 Unix-like 系统上开箱即用。

主要能力

  • 证书签发:支持 Let’s Encrypt、ZeroSSL、Google Trust Services、DigiCert 等多家 CA
  • 自动续期:通过 cron 或 systemd timer 定时检查,到期前自动完成续签
  • 多验证方式:覆盖 HTTP-01、DNS-01、TLS-ALPN-01 等主流 ACME 验证机制
  • DNS API 集成:内置 140+ 家 DNS 服务商的 API 对接,DNS 验证可全自动完成
  • 证书部署:支持自动将证书复制到指定路径,并执行 reload 命令使 Nginx、Apache 等服务生效

安装与使用

curl https://get.acme.sh | sh -s email=your@example.com

安装完成后,脚本会写入 ~/.acme.sh/ 目录,并自动配置 cron 任务用于续期检查。

签发一张证书的典型流程:

# HTTP 验证方式
acme.sh --issue -d example.com -d www.example.com --webroot /var/www/html

# DNS API 验证方式(以 Cloudflare 为例)
export CF_Token="your_api_token"
acme.sh --issue -d example.com --dns dns_cf

技术特点

特性 说明
零依赖 仅需 curl + openssl + 标准 Unix 工具
轻量 全部逻辑在单文件 Shell 脚本中实现
跨平台 支持 Linux、macOS、FreeBSD、Windows(Git Bash/WSL)
可审计 代码透明,便于安全审查

适用场景

  • 服务器运维人员需要批量管理多域名证书
  • 使用 DNS 验证但不想手动更新 TXT 记录的场景
  • 容器或嵌入式环境中无法安装完整 ACME 客户端的场景
  • 希望将证书续期集成到现有自动化流程中的团队

注意事项

  • 安装脚本默认从 GitHub 拉取,生产环境建议先审查脚本内容
  • 使用 DNS API 方式时,API Token 以环境变量形式导出,需注意权限隔离
  • 默认 CA 为 ZeroSSL,如需使用 Let’s Encrypt 需在签发时指定 --server letsencrypt

acme.sh 将证书管理的复杂度压缩到一条命令级别,对于需要长期维护 HTTPS 服务的场景,是一个可落地的自动化方案。

相关导航