位卑未敢忘忧国,事定犹须待盖棺。—— 陆 游《病起》
https://github.com/acmesh-official/acme.sh
acme.sh:轻量级的自动化证书管理工具
在现代 Web 开发中,HTTPS 已成为保障网络安全的基本要求。而实现 HTTPS 的基础是 SSL/TLS 证书的申请、安装和续签。然而,手动管理证书不仅繁琐,还容易出错。为了解决这一问题,acme.sh 提供了一种轻量级、自动化的解决方案。
acme.sh 是一个纯 Shell 脚本的 ACME 客户端,旨在简化证书的申请和管理过程,支持多种 DNS 服务商和 Web 服务,轻松实现自动化。
什么是 acme.sh?
acme.sh
是一个开源的 ACME 客户端,用于申请和管理免费的 SSL/TLS 证书,如 Let’s Encrypt 和 ZeroSSL。它完全基于 Shell 编写,轻量且无依赖,支持多种环境和自动化流程。
核心特性
1. 支持多种 ACME 服务
acme.sh
支持 Let’s Encrypt、ZeroSSL 等多个 ACME 服务,开发者可以根据需求灵活选择。
2. 多种验证方式
支持 HTTP-01、DNS-01 和 TLS-ALPN-01 等验证方式,轻松适配各种环境。
3. 自动化管理
通过定时任务(cron)实现证书自动续签,减少手动操作。
4. 轻量级、无依赖
完全基于 Shell 编写,无需安装其他依赖,运行环境非常轻量。
5. 广泛的 DNS API 支持
支持数十种 DNS 服务商的 API(如 Cloudflare、Aliyun、AWS Route 53),方便开发者使用 DNS-01 验证。
6. 强大的扩展性
支持自定义证书安装脚本,可以将证书自动部署到 Web 服务器或负载均衡器。
应用场景
1. 小型网站
通过 acme.sh
申请免费的 SSL/TLS 证书,为小型网站提供 HTTPS 支持。
2. 自动化证书管理
利用 acme.sh
的自动续签功能,确保证书始终有效,无需人工干预。
3. 企业级应用
支持多域名和通配符证书,适合复杂的企业级应用场景。
快速上手指南
以下是使用 acme.sh
申请和管理证书的基本步骤:
1. 安装 acme.sh
安装 acme.sh
非常简单,可以通过以下命令完成:
1 |
|
安装完成后,确保将 ~/.acme.sh/
目录加入到环境变量中:
1 |
|
2. 申请证书
使用 HTTP-01 验证
如果你的网站可以通过 HTTP 访问,可以使用 HTTP-01 验证:
1 |
|
上述命令会在 /var/www/html
目录中创建验证文件,ACME 服务会通过 HTTP 请求验证它。
使用 DNS-01 验证
如果你的域名支持 DNS API,可以使用 DNS-01 验证:
1 |
|
需要先配置 Cloudflare 的 API Key(或其他 DNS 服务商的 API Key)。
通配符证书
使用 DNS-01 验证申请通配符证书:
1 |
|
3. 安装证书
申请完成后,可以使用以下命令安装证书:
1 |
|
--reloadcmd
用于配置证书安装后自动重新加载 Web 服务器。
4. 自动续签
acme.sh
会自动为证书设置 cron 定时任务,确保证书始终有效。你可以通过以下命令手动检查续签任务:
1 |
|
高级功能
1. 多域名支持
acme.sh
支持一次申请多个域名:
1 |
|
2. Docker 集成
acme.sh
可在 Docker 容器中运行,适用于容器化部署:
1 |
|
3. 自定义 Hook 脚本
通过 --reloadcmd
或 --pre-hook
、--post-hook
在证书安装或续签时执行自定义脚本。例如:
1 |
|
与其他工具的对比
特性 | acme.sh | Certbot | Caddy |
---|---|---|---|
语言 | Shell | Python | Go |
依赖 | 无依赖 | 依赖 Python | 内置自动化工具 |
验证方式 | HTTP/DNS/TLS | HTTP/DNS/TLS | HTTP/DNS |
DNS API 支持 | 支持数十种 DNS 服务商 | 支持部分 DNS 服务商 | 支持部分 DNS 服务商 |
通配符证书 | 支持 | 支持 | 支持 |
轻量性 | 高 | 中 | 高 |
acme.sh
以轻量化和广泛的 DNS API 支持著称,适合需要灵活配置的开发者。
实际案例
1. 静态网站
通过 acme.sh
为静态网站申请和安装证书,确保 HTTPS 支持。
2. 企业内网
使用 acme.sh
为内部服务申请自签名证书,并自动部署到负载均衡器。
3. 云平台集成
将 acme.sh
集成到 CI/CD 流水线中,实现证书的自动化管理。
总结
acme.sh
是一个功能强大、轻量级的自动化证书管理工具,适用于各种环境和场景。无论是个人开发者还是企业团队,都可以通过 acme.sh
简化证书管理流程。
项目地址:https://github.com/acmesh-official/acme.sh
如果你正在寻找一个高效的证书管理工具,不妨试试 acme.sh
!欢迎为项目点亮 ⭐️!
希望这篇文章能帮助你快速了解并上手 acme.sh
,如果有任何疑问或建议,欢迎留言交流!