acme.sh 自动化SSL证书工具

详细教程已归档至 文档中心
https://docs.huasci.com/archives/acme.sh

acme.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

华计科技: 中华自主研发设计

华计科技为您提供咨询服务,IT技术支持和项目开发: (+86) 156 2654 0671

联系我们