acme.sh 自动化SSL证书工具
详细教程已归档至 文档中心
https://docs.huasci.com/archives/acme.shacme.sh
是一个基于 Shell 脚本实现的 ACME 协议客户端,支持申请 Let's Encrypt 及其他 CA 机构的 SSL 证书,兼容 Linux/macOS/BSD/WSL 等环境。以下为标准使用流程和注意事项。
一、安装 acme.sh
curl https://get.acme.sh | sh
安装完成后,脚本会自动将 ~/.acme.sh/acme.sh
添加到 PATH,并写入 ~/.bashrc
或 ~/.zshrc
。
立即生效:
source ~/.bashrc
或
source ~/.zshrc
验证安装是否成功:
acme.sh --version
二、准备事项
拥有一个已解析到服务器的域名
拥有该域名的 DNS 控制权限(如使用 DNS 验证)
或者服务器能开放 80/443 端口(用于 HTTP 验证)
三、申请证书(HTTP 验证)
适用于网站运行在本机,且 80 端口可用的情况:
acme.sh --issue -d example.com -w /var/www/html
-d
:要申请的域名-w
:网站根目录,acme.sh 会在其中写入验证文件
多个域名申请(如带 www):
acme.sh --issue -d example.com -d www.example.com -w /var/www/html
四、申请证书(DNS 验证)
适用于服务器无法开放 80/443 端口或申请泛域名证书的情况。
以 Cloudflare 为例,需设置 API:
export CF_Token="your_cloudflare_api_token" export CF_Account_ID="your_cloudflare_account_id"
然后申请证书:
acme.sh --issue --dns dns_cf -d example.com -d '*.example.com'
其他支持的 DNS 提供商包括阿里云(dns_ali
)、腾讯云(dns_dp
)、华为云(dns_huaweicloud
)等,具体环境变量及配置方式详见官方文档。
五、安装证书到指定目录
acme.sh --install-cert -d example.com \ --key-file /etc/ssl/example.com.key \ --fullchain-file /etc/ssl/example.com.pem \ --reloadcmd "systemctl reload nginx"
说明:
--key-file
:私钥路径--fullchain-file
:证书链路径--reloadcmd
:证书更新后执行的命令(通常为重载 nginx/apache)
该命令会自动建立续期任务,每次续期后会自动调用 reload 命令。
六、启用自动续期(默认开启)
安装证书后,acme.sh 会在 ~/.acme.sh/
下建立 cron 任务(或 systemd timer),每 60 天自动续期一次证书。
验证定时任务是否存在:
crontab -l
手动测试续期:
acme.sh --renew -d example.com --force
七、使用 ECC 证书(可选)
申请更轻量的 ECC(椭圆曲线)证书:
acme.sh --issue -d example.com --keylength ec-256 -w /var/www/html
安装 ECC 证书:
acme.sh --install-cert -d example.com --ecc \ --key-file /etc/ssl/example.com.ec.key \ --fullchain-file /etc/ssl/example.com.ec.pem \ --reloadcmd "systemctl reload nginx"
八、使用自定义 CA(可选)
申请使用 ZeroSSL:
acme.sh --set-default-ca --server zerossl
注册账户(首次需要):
acme.sh --register-account -m your@email.com
九、证书管理常用命令
列出所有已签发证书:
acme.sh --list
查看某个域名的证书详情:
acme.sh --info -d example.com
强制更新证书:
acme.sh --renew -d example.com --force
删除证书:
acme.sh --remove -d example.com
十、其他实用命令
设置默认证书安装路径:
acme.sh --install-cert -d example.com \ --cert-home /etc/ssl/example.com \ --reloadcmd "systemctl reload nginx"
修改默认 CA:
acme.sh --set-default-ca --server letsencrypt
切换证书 key 长度:
acme.sh --issue -d example.com --keylength 4096 -w /var/www/html
十一、日志与排错
查看日志:
cat ~/.acme.sh/acme.sh.log
常见问题:
权限问题:确保 web 目录可写或 DNS API 权限正确
端口冲突:申请 HTTP 证书时,80 端口不能被其他服务占用
防火墙问题:开放必要端口或允许 DNS 验证通过
十二、卸载 acme.sh
acme.sh --uninstall
总结
acme.sh 是一个灵活、轻量的 SSL 证书自动化工具,几乎能适配任何环境。掌握其基本命令、验证方式和部署策略后,可以轻松实现 HTTPS 自动化,无需依赖 certbot 或 web 面板。
Comment