一、核心准备
- 必要条件
- 拥有一个可控域名(示例中
mydomain.com
需替换为你的域名) - 系统要求:Debian/Ubuntu 等 Linux 发行版(需 root 权限)
- 拥有一个可控域名(示例中
二、快速部署流程
- 一键安装与环境配置
安装并绑定邮箱(替换 [email protected])
curl <https://get.acme.sh> | sh -s [email protected]
- 验证安装:出现
Install success
表示成功 - 邮箱修改:编辑
~/.acme.sh/account.conf
调整邮箱
- 配置证书颁发机构(推荐 ZeroSSL)
acme.sh --set-default-ca --server zerossl
- 成功标识:输出
Changed default CA to: <https://acme.zerossl.com/v2/DV90
>
- 启用自动续期
检查自动续期状态
crontab -l | grep "acme.sh --cron"
若无输出,手动添加(默认安装时已自动配置)
echo "0 0 * * * /root/.acme.sh/acme.sh --cron" | crontab -
三、证书申请方案
方案 A:手动 DNS 验证(适合无 API 权限)
-
生成验证记录
acme.sh --issue --dns -d mydomain.com -d *.mydomain.com \\ --yes-I-know-dns-manual-mode-enough-go-ahead-please
- 根据输出添加
acme-challenge
的 TXT 记录(需等待 DNS 生效,约 10 分钟)
- 根据输出添加
-
签发证书
acme.sh --renew --dns -d mydomain.com -d *.mydomain.com \\ --yes-I-know-dns-manual-mode-enough-go-ahead-please
方案 B:自动 DNS API(推荐长期使用)
以 Cloudflare 为例:
-
配置 API 凭据
export CF_Token="your_api_token" export CF_Account_ID="your_account_id" export CF_Zone_ID="your_zone_id"
-
一键签发泛域名证书
acme.sh --issue --dns dns_cf -d mydomain.com -d *.mydomain.com
- 支持 50+ 服务商 API(如阿里云、GoDaddy)
四、证书文件与部署
- 证书路径
~/.acme.sh/mydomain.com_ecc/
├── mydomain.com.key # 私钥
├── fullchain.cer # 完整证书链(推荐使用)
└── ca.cer # 中间证书
- 安全部署建议
-
禁止直接引用.acme.sh目录:使用
-install-cert
命令复制到安全路径acme.sh --install-cert -d mydomain.com \\ --key-file /etc/ssl/private/key.pem \\ --fullchain-file /etc/ssl/certs/cert.pem
-
Nginx 配置示例:
ssl_certificate /etc/ssl/certs/cert.pem; ssl_certificate_key /etc/ssl/private/key.pem;
五、关键注意事项
- 续期监控
- 每日自动续期检查(通过 cron 实现)
- 手动测试续期:
acme.sh --cron --debug
- 证书安全
- 私钥权限设置为 600:
chmod 600 mydomain.com.key
- 避免 API 令牌泄露(Cloudflare 建议使用临时 API Token)
- 私钥权限设置为 600:
- 兼容性说明
- ECC 证书兼容性:现代浏览器/服务器均支持,RSA 证书可通过
-keylength 2048
生成
- ECC 证书兼容性:现代浏览器/服务器均支持,RSA 证书可通过
六、扩展支持
- 多服务部署:支持自动部署到 Nginx/Apache/Docker 等
- 日志排查:通过
-debug
参数输出详细信息 - 官方文档:
注:若需适配其他 DNS 服务商(如阿里云、AWS),参考 /root/.acme.sh/dnsapi/ 中的示例脚本。