Certbot和acme.sh是两个最流行的ACME客户端工具,用于从Let's Encrypt等CA申请和管理SSL证书。它们各有特点,选择哪个工具取决于您的具体需求。本文将详细对比这两个工具,帮助您选择最适合的ACME客户端。
一、工具概述
1. Certbot
开发者:电子前哨基金会(EFF)
特点:
- 官方推荐的ACME客户端
- 支持多种Web服务器自动配置
- 提供友好的命令行界面
- 文档完善,社区支持好
2. acme.sh
开发者:Neilpang(开源社区)
特点:
- 纯Shell脚本实现
- 轻量级,无依赖
- 支持多种DNS服务商
- 功能强大,配置灵活
二、功能对比
1. 基本功能
| 功能 | Certbot | acme.sh |
|---|---|---|
| 申请证书 | ✅ | ✅ |
| 自动更新 | ✅ | ✅ |
| 自动部署 | ✅ | ✅ |
| DNS验证 | ✅ | ✅ |
| HTTP验证 | ✅ | ✅ |
| 通配符证书 | ✅ | ✅ |
| 多域名证书 | ✅ | ✅ |
2. Web服务器支持
| 服务器 | Certbot | acme.sh |
|---|---|---|
| Nginx | ✅ 自动配置 | ⚠️ 手动配置 |
| Apache | ✅ 自动配置 | ⚠️ 手动配置 |
| IIS | ⚠️ 部分支持 | ⚠️ 部分支持 |
| 其他 | ⚠️ 有限支持 | ✅ 灵活支持 |
3. DNS服务商支持
| DNS服务商 | Certbot | acme.sh |
|---|---|---|
| Cloudflare | ✅ | ✅ |
| 阿里云 | ⚠️ 需插件 | ✅ |
| 腾讯云 | ⚠️ 需插件 | ✅ |
| AWS Route 53 | ✅ | ✅ |
| GoDaddy | ⚠️ 需插件 | ✅ |
| 其他 | ⚠️ 有限 | ✅ 100+支持 |
三、易用性对比
1. 安装
Certbot:
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install certbot
# CentOS/RHEL
sudo yum install certbot
acme.sh:
# 一键安装
curl https://get.acme.sh | sh
2. 申请证书
Certbot(HTTP验证):
sudo certbot certonly --webroot \
-w /var/www/html \
-d example.com
acme.sh(HTTP验证):
~/.acme.sh/acme.sh --issue \
-d example.com \
--webroot /var/www/html
3. 自动配置Web服务器
Certbot:
# 自动配置Nginx
sudo certbot --nginx -d example.com
# 自动配置Apache
sudo certbot --apache -d example.com
acme.sh:
- 不提供自动配置功能
- 需要手动配置Web服务器
四、适用场景
1. Certbot适合
推荐场景:
- ✅ 使用Nginx或Apache
- ✅ 需要自动配置Web服务器
- ✅ 新手用户
- ✅ 标准部署场景
优势:
- 自动配置Web服务器
- 官方支持,文档完善
- 社区支持好
2. acme.sh适合
推荐场景:
- ✅ 需要DNS验证
- ✅ 使用非标准Web服务器
- ✅ 需要灵活配置
- ✅ 高级用户
优势:
- 支持100+ DNS服务商
- 纯Shell脚本,无依赖
- 配置灵活
- 功能强大
五、详细对比
1. 安装和依赖
Certbot:
- 需要Python环境
- 通过包管理器安装
- 依赖较多
acme.sh:
- 纯Shell脚本
- 无外部依赖
- 安装简单
2. 自动更新
Certbot:
- 自动创建systemd timer
- 证书到期前30天自动更新
- 需要root权限
acme.sh:
- 自动创建cron任务
- 证书到期前30天自动更新
- 不需要root权限(安装后)
3. 证书部署
Certbot:
- 可以自动部署到Web服务器
- 支持reload命令
- 配置简单
acme.sh:
- 需要手动配置部署脚本
- 支持自定义部署命令
- 配置灵活
4. DNS验证
Certbot:
- 需要安装DNS插件
- 支持主要DNS服务商
- 配置相对复杂
acme.sh:
- 内置100+ DNS服务商支持
- 配置简单
- 支持更多DNS服务商
六、使用示例
1. Certbot示例
申请证书(HTTP验证):
sudo certbot certonly --webroot \
-w /var/www/html \
-d example.com \
-d www.example.com
申请证书(DNS验证):
sudo certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini \
-d example.com \
-d *.example.com
自动配置Nginx:
sudo certbot --nginx \
-d example.com \
-d www.example.com
2. acme.sh示例
申请证书(HTTP验证):
~/.acme.sh/acme.sh --issue \
-d example.com \
-d www.example.com \
--webroot /var/www/html
申请证书(DNS验证):
export CF_Email="your-email@example.com"
export CF_Key="your-api-key"
~/.acme.sh/acme.sh --issue \
-d example.com \
-d *.example.com \
--dns dns_cf
安装证书:
~/.acme.sh/acme.sh --install-cert \
-d example.com \
--key-file /etc/nginx/ssl/key.pem \
--fullchain-file /etc/nginx/ssl/fullchain.pem \
--reloadcmd "systemctl reload nginx"
七、选择建议
1. 选择Certbot
推荐场景:
- 使用Nginx或Apache
- 需要自动配置Web服务器
- 新手用户
- 标准部署场景
2. 选择acme.sh
推荐场景:
- 需要DNS验证
- 使用非标准Web服务器
- 需要支持特定DNS服务商
- 需要灵活配置
- 高级用户
3. 使用OHTTPS平台
推荐场景:
- 不想使用命令行工具
- 需要友好的管理界面
- 需要自动部署到多个节点
- 需要证书监控
- 需要集中管理多个证书
优势:
- 友好的Web界面
- 自动更新和部署
- 证书监控
- 支持多种部署方式
八、最佳实践
1. 工具选择
- ✅ 标准场景:使用Certbot
- ✅ DNS验证:使用acme.sh
- ✅ 非标准场景:使用acme.sh
- ✅ 需要界面:使用OHTTPS
2. 证书管理
- ✅ 使用自动更新功能
- ✅ 设置证书到期提醒
- ✅ 定期检查证书状态
- ✅ 备份证书和私钥
3. 安全配置
- ✅ 使用强加密协议
- ✅ 配置安全响应头
- ✅ 启用HSTS
- ✅ 定期更新工具
总结
Certbot和acme.sh都是优秀的ACME客户端工具,各有特点和适用场景。选择哪个工具主要取决于您的具体需求和技术水平。
关键要点:
- ✅ Certbot:适合标准场景,自动配置Web服务器
- ✅ acme.sh:适合DNS验证,配置灵活
- ✅ OHTTPS:适合需要友好界面和自动化管理的场景
如果您不想使用命令行工具,推荐使用OHTTPS平台,它提供了友好的Web界面和完整的证书管理功能,让SSL证书管理变得简单高效。
OHTTPS: 免费HTTPS证书/SSL证书申请 • 自动化更新、部署、监控
OHTTPS 支持通过多种域名验证方式(DNS验证、HTTP验证、文件验证等)申请免费的HTTPS证书/SSL证书,包括单域名证书、多域名证书、通配符证书、IP证书等,支持HTTPS证书/SSL证书的自动化更新、自动化部署、自动化监控及告警等,并支持将HTTPS证书/SSL证书自动化部署至阿里云、腾讯云、群晖NAS、百度云、七牛云、多吉云、又拍云、宝塔面板、Docker容器、SSH等,实现HTTPS证书/SSL证书的一站式申请、更新、部署、监控和管理。