七牛融合 cdn 域名需要 ssl 证书,七牛免费的一年期证书快到期了,正好 letsencrypt 可以提供免费证书,我考虑把证书换成 letsencrypt 证书。letsencrypt 证书有效期三个月,需要定期更新并上传到七牛,于是我开始寻找自动更新 letsencrypt 证书并上传到七牛的方法,搜了一圈,发现使用 Neilpang/acme.sh 这个工具就可以完成这个自动化过程。过程中需要使用 DNS 服务商的接口支持。
用 acme.sh 签发证书
安装 acme.sh
一句话命令:
curl https://get.acme.sh | sh
安装完之后需要重新打开终端来使 alias 生效,或者手动刷新,比如用 zsh 的:source ~/.zshrc。
签发证书
letsencrypt 签发证书有多种模式,最常用的 webroot 模式不可用,因为需要将域名 A 记录解析到服务器 ip,而七牛融合 CDN 需要设置 cname 记录,俩者会有冲突,所以我采用了 DNS Api 模式,签发过程中会通过 DNSPod 的 Api 尝试创建 DNS 的 txt 记录来进行验证。
先去获取 DNSPod 的 token:DNSPod:[201505] API 鉴权方式升级为 Token,记录下 ID 和 Token 备用。
再使用 acme.sh 的命令:
# DNSPod Token Id
export DP_Id="1234"
# DNSPod Token 值
export DP_Key="sADDsdasdgdsf