切换到普通用户
curl https://get.acme.sh | sh -s email=xxx@126.com
重新登陆ssh
申请 DNS API Token,目前acme支持160个DNS服务商,这里申请的阿里云的api
在阿里云后台添加一个新的子账号,点击子账号,选择用户 创建 AccessKey,记录ID和key
然后点击授权,选择 管理云解析(DNS)的权限即可

然后在账号的家目录添加环境变量vim .bash_profile
export Ali_Key="xxxxxx"
export Ali_Secret="xxxxxx"
然后执行
acme.sh --issue --dns dns_ali -d *.example.com -d example.com
acme.sh --install-cert -d *.example.com -d example.com --key-file /data/web/key/example.com.key --fullchain-file /data/web/key/example.com.cer

自动添加定时
50 0 * "/home/www/.acme.sh"/acme.sh --cron --home "/home/www/.acme.sh" > /dev/null

如果你的 DNS 服务商不提供 API 或 acme.sh 暂未支持,又或者处于安全方面的考虑,不想将重要的域名的 API 权限暴露给 acme.sh,
可以申请一个测试域名,然后在重要域名上设置 CNAME(参见下方 DNS alias mode)。
不想泄露重要域名管理,可以找到一个不重要的域名放在不重要的后台,申请 DNS API Token,各大厂商自行百度。
For example, your main domain is example.com, which doesn't have API access, or you don't want to give the API access to acme.sh, since it's important.
Another domain: aliasDomainForValidationOnly.com, which has a supported DNS API. This domain is less important, and maybe it's used for validation only.
首先做 CName 映射,在要申请证书的example.com域名加上cname 解析,映射到有 DNS API 的aliasDomainForValidationOnly.com域名:
_acme-challenge.example.com IN CNAME _acme-challenge.aliasDomainForValidationOnly.com
然后
acme.sh --issue -d *.example.com -d example.com --challenge-alias aliasDomainForValidationOnly.com --dns dns_ali

支持多个域名解析到同一个aliased domain
acme.sh --issue -d *.example1.com -d example1.com --challenge-alias aliasDomainForValidationOnly.com --dns dns_ali
acme.sh --issue -d *.example2.com -d example2.com --challenge-alias aliasDomainForValidationOnly.com --dns dns_ali
acme.sh --issue -d *.example3.com -d example3.com --challenge-alias aliasDomainForValidationOnly.com --dns dns_ali
......

备注:-d example.com 需要单独申请,不然打开的时候提示没有证书

参考文档
https://it.cha138.com/nginx/show-315654.html
https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E
https://github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_ali
https://github.com/acmesh-official/acme.sh/wiki/DNS-alias-mode