acme.sh:用 Shell 脚本搞定 SSL 证书申请和续期

📅 2026/7/1 6:11:21
acme.sh:用 Shell 脚本搞定 SSL 证书申请和续期
文章目录acme.sh用 Shell 脚本搞定 SSL 证书申请和续期为什么需要它支持哪些 CA 和验证方式安装和使用跨平台和兼容性实际使用场景acme.sh用 Shell 脚本搞定 SSL 证书申请和续期acme.sh 在 GitHub 上已经拿到 47K Star 了。这个项目做的事情很明确——用纯 Shell 脚本实现 ACME 协议自动申请和续期 SSL 证书。不需要 Python不需要 Node一个 Shell 脚本就够了。为什么需要它做过 HTTPS 部署的人都知道证书这件事说简单也简单说麻烦也麻烦。Let’s Encrypt 提供免费证书但申请流程要走 ACME 协议续期要定时跑多域名、通配符证书的配置各有讲究。手动操作容易忘过期了网站就挂。acme.sh 把这套流程封装成一个 Shell 脚本。装好之后证书申请、续期、安装到 Nginx 或 Apache全自动化。默认 30 天续期一次还支持 RFC 9773 的 ARI 续期建议机制CA 那边说什么时候该换脚本自己会跟着调整。支持哪些 CA 和验证方式默认用 ZeroSSL也支持 Let’s Encrypt、SSL.com、Google Public CA、Actalis以及任何符合 RFC 8555 标准的 CA。验证方式有好几种Webroot 模式用现有网站目录验证Standalone 模式脚本自己起一个 HTTP 服务在 80 端口TLS-ALPN 模式走 443 端口验证Apache/Nginx 模式直接对接 Web 服务器做验证DNS 模式通过 DNS TXT 记录验证支持通配符证书DNS Persist 模式放一条长期 TXT 记录后续续期不用再改 DNS大部分 DNS 服务商都有 API 集成Cloudflare、阿里云、腾讯云这些常见的都覆盖了。没有 API 的也能手动加 TXT 记录只是续期时得再操作一次。安装和使用安装就一行curlhttps://get.acme.sh|sh-semailmyexample.com装完之后自动配好 cron 任务每天检查一次是否需要续期。申请单域名证书acme.sh--issue-dexample.com-w/var/www/html多域名或通配符acme.sh--issue-dexample.com-d*.example.com--dnsdns_cf申请完把证书装到 Nginxacme.sh --install-cert-dexample.com\--key-file /etc/nginx/key.pem\--fullchain-file /etc/nginx/cert.pem\--reloadcmdservice nginx force-reload续期后会自动执行 reloadcmd不用手动重启服务。跨平台和兼容性acme.sh 在测试矩阵里覆盖了二十多个平台各种 Linux 发行版、macOS、FreeBSD、OpenBSD、NetBSD、Solaris、Windows通过 Cygwin甚至 Haiku OS 和 OpenWRT。Shell 层面兼容 Bash、dash、sh。不需要 root 权限就能运行证书放在用户目录下。Docker 也能用官方提供了镜像。实际使用场景acme.sh 被 FreeBSD.org、Proxmox、pfsense、discourse.org 这些项目用在生产环境里。一个 Shell 脚本能跑这么多年、覆盖这么多平台靠的不是花哨的功能就是把证书管理这件事做扎实了。对于个人站长或小团队装一次就不用管了。对于运维批量管理多台服务器的场景Shell 脚本的优势在于部署简单不需要额外的运行时依赖。扎实了。对于个人站长或小团队装一次就不用管了。对于运维批量管理多台服务器的场景Shell 脚本的优势在于部署简单不需要额外的运行时依赖。