¶一、简要概述
acme.sh 是一个免费、开源、自动化的 ACME 客户端工具,可用于申请免费的 SSL 证书。它可以帮助网站管理员轻松地实现 HTTPS 等功能,提高网站的安全性和可靠性。
ACME 协议的说明:该协议定义了客户端(通常是证书申请者或服务器管理员)和证书颁发机构之间的交互过程。ACME 客户端使用 ACME 协议与证书颁发机构的 ACME 服务端进行通信,实现自动申请证书、证明域名所有权、获取证书、以及在证书到期前续订证书等功能。
提示:
acme.sh和 Certbot 都是 ACME 客户端工具,虽然它们和 ACME 服务端的交互逻辑都是相似的,但它们由不同团队维护,所以使用上会有很多不同的地方(例如:不同的命令参数、不同的证书生成路径、不同的插件支持等)。相比 Certbot 而言,
acme.sh具有如下优势:
acme.sh更加轻量和易于安装(acme.sh是 Shell 脚本程序,默认就能在各种 Linux 系统上运行,且没有其他依赖关系,而 Certbot 是 Python 脚本程序,依赖 Python 环境);acme.sh支持更多的 CA(Certbot 默认只支持 Let’s Encrypt,但acme.sh可同时支持 Let’s Encrypt、ZeroSSL、Buypass、Google、SSL.com 等 CA 机构,参考:https://github.com/acmesh-official/acme.sh/wiki/CA)acme.sh官方文档对于中文支持更友好;acme.sh对于 DNS API 的支持更完善(如:阿里云、腾讯云、华为云等,具体 DNS API 支持参考:https://github.com/acmesh-official/acme.sh/wiki/dnsapi),而 Certbot 默认对阿里云、腾讯云、华为云等不支持。
¶二、安装
1 | #acme.sh依赖一些工具包(如果系统没有则需要安装相关依赖包) |
¶三、卸载
1 | acme.sh --uninstall #自动删除alias环境变量等 |
¶四、更新
1 | #手动更新 |
¶五、使用
1 | ##修改默认CA(可选) |
申请证书后,会将证书保存的目录为:
~/.acme.sh/example.com(提示:如果为 ECC 证书,则目录为:example.com_ecc),包含一下文件:
ca.cer:CA 证书文件fullchain.cer:证书链文件(中间证书)example.com.cer:证书文件example.com.key:私钥文件example.com.conf:指定证书的配置文件example.com.csr:证书请求文件example.com.csr.conf:acme.sh 对于特定证书请求文件的配置文件关于 Let’s Encrypt 证书申请次数限制:
生产环境限制
每个域名/证书每周最多只能签发 5 次
每个 IP 地址每小时最多能提交 300 个证书申请请求
测试环境限制(指定
--staging或--test选项时)
- 测试环境下颁发的证书无法被浏览器或操作系统信任
- 测试环境下每个域名/证书每周最多可签发 50 次
- 测试环境下每个 IP 地址每小时最多能提交 300 个请求
- 测试环境下没有通过 HSTS 预载的域名(生产环境支持通过 HSTS 预载的域名)
¶六、备份还原
备份(在原服务器上进行)
1 | ##备份acme.sh的脚本、证书、配置文件 |
还原(在新服务器上进行)
1 | #使用 rz 上传备份包到 /root 目录(可选) |
