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

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 记录,只是续期时得再操作一次。

README区域截图

安装和使用

安装就一行:

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

装完之后自动配好 cron 任务,每天检查一次是否需要续期。

申请单域名证书:

acme.sh --issue -d example.com -w /var/www/html

多域名或通配符:

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

申请完把证书装到 Nginx:

acme.sh --install-cert -d example.com \
  --key-file       /etc/nginx/key.pem \
  --fullchain-file /etc/nginx/cert.pem \
  --reloadcmd      "service 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 脚本的优势在于部署简单,不需要额外的运行时依赖。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值