文章目录acme.sh用 Shell 脚本搞定 SSL 证书这件事1、 这玩意儿是干嘛的2、 装起来有多简单3、 支持哪些验证方式4、 证书续期和 ARI5、 哪些项目在用6、 适合谁用acme.sh用 Shell 脚本搞定 SSL 证书这件事acme.sh 在 GitHub 上已经拿到 46,949 Star 了。一个用纯 Shell 写的 ACME 协议客户端专门干一件事——自动申请和续期 SSL 证书。支持 ZeroSSL、Let’s Encrypt、Google Public CA 等多家证书颁发机构被 FreeBSD.org、Proxmox、pfsense 这些项目直接用在生产环境里。1、 这玩意儿是干嘛的就一件事让你不用再手动折腾 SSL 证书。装完之后一行命令就能申请证书。之后每 30 天自动检查到期前自动续期续完自动把新证书装到 Nginx 或 Apache 上顺带把服务 reload 一遍。整个过程你什么都不用管。它不依赖 Python不依赖其他运行时就是一个 Shell 脚本。Bash、dash、sh 都能跑不需要 root 权限standalone 模式除外。2、 装起来有多简单安装就一行curlhttps://get.acme.sh|sh-semailmyexample.com装完之后它会干三件事把脚本放到~/.acme.sh/目录下建一个acme.sh的别名再加一条每天跑一次的 cron 任务。关掉终端重新打开就能用了。申请证书acme.sh--issue-dexample.com-w/var/www/html-w指向你网站的根目录脚本会往里面放一个验证文件CA 来检查完就签发证书。装到 Nginx 上acme.sh --install-cert-dexample.com\--key-file /etc/nginx/ssl/key.pem\--fullchain-file /etc/nginx/ssl/fullchain.pem\--reloadcmdservice nginx force-reload之后每次续期它都会自动把新证书复制过去然后执行 reloadcmd。3、 支持哪些验证方式方式很多按场景选就行Webroot 模式你已经有 Nginx 或 Apache 在跑指定网站根目录就行不用停服务。Standalone 模式脚本自己起一个 HTTP 服务器监听 80 端口适合还没有 Web 服务的机器。Apache / Nginx 模式脚本直接跟你的 Web 服务器交互完成验证不用往 Web 目录里写文件。DNS 模式通过添加 DNS TXT 记录来验证。支持通配符证书也支持泛域名。如果你的 DNS 服务商有 APIacme.sh 内置了几十家 DNS 服务商的对接全自动完成。Cloudflare、阿里云、腾讯云、AWS Route53 这些都在列表里。DNS Persist 模式在 DNS 里放一条长期有效的验证记录之后每次签发和续期都复用它不用再改 DNS。适合不方便用 API 但又想自动续期的场景。4、 证书续期和 ARI证书默认 30 天检查一次到期前自动续期。如果你用的 CA 支持 ARIACME Renewal InformationRFC 9773acme.sh 会自动读取 CA 建议的续期窗口在那个时间范围内随机挑一个时间点续期。这样做的好处是避免所有客户端在同一时刻冲向 CA分散负载。不需要任何额外配置装完就生效。想手动续期也可以acme.sh--renew-dexample.com--force5、 哪些项目在用FreeBSD.org 的官方博客写过用 acme.sh 管理证书的教程。Proxmox VE 的官方 Wiki 里把 acme.sh 列为推荐的证书管理方案。pfsense 的 FreeBSD ports 里直接集成了它。ruby-china.org、discourse.org、lnmp.org 这些项目也在用。6、 适合谁用管过服务器的人都知道SSL 证书这事不大但很烦。申请、部署、续期、reload每个环节都得盯着。漏了续期网站就挂了。acme.sh 把这几个环节串成了一条线装完之后基本不用再管。适合自己有服务器、在跑 Nginx 或 Apache 的运维和开发者在做自动化部署、想把证书管理塞进 CI/CD 流程的团队用 OpenWRT、Proxmox 这类嵌入式或虚拟化平台的用户它本身是一个 GPLv3 协议的开源项目由 ZeroSSL 维护接受社区贡献。D 流程的团队用 OpenWRT、Proxmox 这类嵌入式或虚拟化平台的用户它本身是一个 GPLv3 协议的开源项目由 ZeroSSL 维护接受社区贡献。