安装 acme.sh
curl https://get.acme.sh | sh
参考 https://github.com/Neilpang/acme.sh
安装完成之后可执行文件位于 ~/.acme.sh/acme.sh
生成 dnspod 的API Token
地址 https://www.dnspod.cn/console/user/security
用户中心 > 安全设置 > API Token > 创建 API Token
注意,Token 只显示一次, 保存下来, 如果忘记了, 就只能删除然后重新生成了。
还需需要记录下 API Token 的 ID
开始签发证书
参考 https://github.com/Neilpang/acme.sh/tree/master/dnsapi
首先设置环境变量
export DP_Id="API Token 的 ID"
export DP_Key="API Token"
然后可以开始签发了
acme.sh --issue --dns dns_dp -d example.com -d www.example.com
每个 -d
参数可以指定一个域名, 可以把需要用到的子域名也全部列出来
自动运行的流程大概是这样的
- 使用dnspod的api 自动生成所有的验证域名txt记录 _acme-challenge.example.com, 每个子域名也会有_acme-challenge.www.example.com
- 等待dns记录生效,自动脚本会sleep 120 秒
- 检查验证的dns记录, 没有问题的话签发证书保存到本地, 再次调用api 移除验证的域名
- 创建crontab 自动更新相关证书。
生成好的证书位于 ~/.acme.sh/www.example.com
目录下, 至此证书就签发好了。
另外自动创建的 crontab
24 0 * * * "/home/tian/.acme.sh"/acme.sh --cron --home "/home/tian/.acme.sh" > /dev/null
应该会每天运行一次, 在证书过期前自动更新。