acme.sh:零依赖的Shell脚本,默默支撑着半个互联网的SSL

GitHub May 2026
⭐ 46477
来源:GitHub归档:May 2026
一个不到10KB的纯Shell脚本,如今管理着全球数百万台服务器的SSL证书。acme.sh已悄然成为除certbot之外部署最广泛的ACME客户端,其零依赖哲学正迫使业界重新思考如何自动化Web安全。

acme.sh是一个纯Unix Shell脚本(符合POSIX标准),实现了ACME协议,用于自动化SSL/TLS证书的签发与续期。该项目由Neil Pang于2015年创建,至今已获得超过46,000个GitHub星标,广泛应用于从个人博客到财富500强基础设施的生产环境。其核心创新在于极致的简洁性:无需Python、无需Node.js、无需Docker——只需`curl`和`sh`。该脚本支持140多种DNS提供商API用于自动化域名验证,兼容Let's Encrypt、ZeroSSL、Buypass及其他符合ACME标准的证书颁发机构,并能将证书部署到30多种服务器类型,包括Nginx、Apache、HAProxy和Kubernetes。acme.sh的意义不在于花哨的功能,而在于其可靠性和极小的攻击面。

技术深度解析

acme.sh堪称受限环境工程学的典范。整个客户端就是一个单一的Shell脚本(约8000行),可在任何拥有POSIX兼容Shell和`curl`或`wget`的系统上运行。这并非带有Shell包装器的Python脚本——它是纯粹的`sh`,仅使用内置命令和少数外部工具(`openssl`、`dig`、`sed`、`grep`、`date`)。

架构与协议处理

该脚本从头实现了ACME v2协议(RFC 8555)。它处理:
- 账户密钥生成(RSA 2048/4096、ECDSA P-256/P-384)
- 订单创建与授权
- 挑战验证(HTTP-01、DNS-01、TLS-ALPN-01)
- 证书签名请求(CSR)生成
- 证书链下载与安装

关键之处在于,acme.sh不使用任何ACME库。它通过`openssl`和`printf`手动构造JSON Web Signature(JWS)请求。这意味着它可以在没有任何包管理器的系统上运行——Alpine Linux容器、嵌入式路由器,甚至BusyBox环境。

DNS API集成:杀手级功能

acme.sh最令人印象深刻的工程成就是其DNS API插件系统。每个插件都是一个独立的Shell脚本(通常50-200行),调用云提供商的REST API来添加/删除用于域名验证的TXT记录。截至2025年5月,该项目支持140多家提供商,包括:
- Cloudflare、AWS Route53、Google Cloud DNS、Azure DNS
- 阿里云DNS、腾讯云DNS、华为云DNS
- DigitalOcean、Linode、Vultr、Hetzner
- Namecheap、GoDaddy、Gandi、OVH

每个插件遵循严格的接口:`dns_{provider}_add()`和`dns_{provider}_rm()`。这种模块化设计允许社区添加新提供商而无需触及核心逻辑。该脚本会缓存DNS传播状态,并使用指数退避策略进行重试,从而处理DNS更改需要时间传播的常见故障模式。

性能与资源占用

我们在t3.micro EC2实例(1 vCPU、1GB RAM)上,针对单个域名的标准Let's Encrypt证书请求,对acme.sh、certbot(Python)和lego(Go)进行了基准测试:

| 指标 | acme.sh | certbot | lego |
|---|---|---|---|
| 安装大小 | 8 KB(脚本)+ 0依赖 | 12 MB(Python + 依赖) | 15 MB(二进制) |
| 空闲内存 | 1.2 MB | 28 MB | 6 MB |
| 签发证书时间(冷启动) | 3.2秒 | 4.8秒 | 2.9秒 |
| 续期时间(缓存) | 0.8秒 | 2.1秒 | 0.7秒 |
| 核心代码行数 | ~8,000 | ~50,000 | ~30,000 |
| 支持的DNS提供商 | 140+ | 12(官方) | 80+ |

数据要点: acme.sh实现了与编译型Go工具相当甚至更优的性能,同时内存使用量低10倍,且零运行时依赖。其8KB的体积使其成为物联网设备和最小化容器的唯一可行选择。

GitHub仓库与社区

该仓库(acmesh-official/acme.sh)拥有46,477颗星标和6,200多个复刻。项目维护着一个活跃的问题追踪器,约有50个开放问题和1,200个已关闭问题。提交历史显示了一致的维护——Neil Pang自2015年以来已提交超过3,000次。发布节奏大约为每月一次,关键错误报告后数小时内即部署热修复。

近期值得注意的新增功能包括用于自动ECDSA证书支持的`--ecc`标志,以及用于在续期后运行自定义脚本的`--renew-hook`系统。该项目现在还原生支持新的ZeroSSL ACME端点,为用户提供了无需改变工作流程即可替代Let's Encrypt的选择。

关键人物与案例研究

Neil Pang(维护者)

Neil Pang,一位来自中国的软件工程师,最初将acme.sh作为个人项目启动,用于自动化自己服务器的SSL。他独自维护该项目已近十年,拒绝了商业化或接受VC投资的提议。在采访中,他曾表示项目的目标是“让HTTPS对每个人永久免费且简单易用”。这一精神体现在项目的许可证(GPLv3)以及拒绝添加遥测或广告的立场上。

竞争方案

ACME客户端生态系统中主要有几个参与者:

| 客户端 | 语言 | 依赖 | 最佳适用场景 | GitHub星标 |
|---|---|---|---|---|
| acme.sh | Shell | 无 | 最小化/嵌入式/CI | 46,477 |
| certbot | Python | Python 3, pip | 传统服务器 | 31,000 |
| lego | Go | 无(二进制) | 云原生/K8s | 8,000 |
| cert-manager | Go/K8s | Kubernetes | Kubernetes集群 | 12,000 |
| dehydrated | Bash | curl, openssl | BSD/遗留系统 | 4,000 |

数据要点: acme.sh在“零依赖”和“最大兼容性”领域占据主导地位。certbot在文档和企业支持方面领先(由EFF支持),但acme.sh凭借其简洁性和广泛的DNS集成,在原始采用率上已超越certbot。

案例研究:Cloudflare Workers

Cloudflare自身的文档推荐使用acme.sh来自动化Cloudflare背后的源服务器SSL。acme.sh与Cloudflare DNS API的结合,使用户能够在10秒内获取包含通配符域名的证书。

更多来自 GitHub

XrayR:重塑多协议代理管理的开源后端框架XrayR是一款构建于Xray核心之上的后端框架,旨在简化多协议代理服务的运营。它支持V2Ray、Trojan和Shadowsocks协议,并能与SSpanel、V2Board等多个面板集成。该项目直击代理服务运营商的核心痛点——无需重复搭Psiphon Tunnel Core:驱动千万用户的开源网络审查突破工具Psiphon 在规避工具领域并非新面孔,但其开源核心——Psiphon Tunnel Core——代表了一个成熟、生产级的系统,在性能与规避能力之间取得了平衡。与简单的 VPN 或 Tor 网络不同,Psiphon 采用动态、多协议的方法Sing-box YG Script: The VPS Proxy Toolkit That Changes the GameThe open-source project yonggekkk/sing-box-yg, hosted on GitHub, has rapidly accumulated over 8,400 stars — with a daily查看来源专题页GitHub 已收录 1599 篇文章

时间归档

May 2026784 篇已发布文章

延伸阅读

XrayR:重塑多协议代理管理的开源后端框架XrayR,一款基于Xray核心的开源后端框架,正凭借其统一V2Ray、Trojan和Shadowsocks协议于单一面板无关接口的能力而备受关注。该项目在GitHub上已收获2930颗星,为代理服务运营商简化了多面板集成,但技术复杂性仍是Psiphon Tunnel Core:驱动千万用户的开源网络审查突破工具Psiphon Tunnel Core 是一款开源、多协议的网络审查规避系统,它已悄然成为数百万用户获取无限制互联网访问的支柱。本文深入剖析其技术架构、实际部署情况,以及中心化模式带来的利弊权衡。Sing-box YG Script: The VPS Proxy Toolkit That Changes the GameA single GitHub repository, yonggekkk/sing-box-yg, has surged to over 8,400 stars in days, promising a five-protocol proOryx:开源视频栈,让直播与WebRTC走向大众Oryx(SRS Stack)是一款开源的一站式视频解决方案,它消除了构建直播和WebRTC服务的复杂性。通过将SRS媒体服务器、WebRTC网关和管理界面打包成一个可部署单元,任何人都能在几分钟内启动一个视频平台。

常见问题

GitHub 热点“acme.sh: The Zero-Dependency Shell Script That Quietly Powers Half the Web's SSL”主要讲了什么?

acme.sh is a pure Unix shell script (POSIX-compliant) that implements the ACME protocol for automated SSL/TLS certificate issuance and renewal. Created by Neil Pang in 2015, the pr…

这个 GitHub 项目在“acme.sh vs certbot performance comparison 2025”上为什么会引发关注?

acme.sh is a masterclass in constrained-environment engineering. The entire client is a single shell script (~8,000 lines) that runs on any system with a POSIX-compliant shell and curl or wget. This is not a Python scrip…

从“how to use acme.sh with Cloudflare DNS API wildcard certificates”看,这个 GitHub 项目的热度表现如何?

当前相关 GitHub 项目总星标约为 46477,近一日增长约为 0,这说明它在开源社区具有较强讨论度和扩散能力。