Let’s Encrypt是个很好的工具,让我们贫农免费用上了HTTPS。公司一直用阿里云,前端时间Let’s Encrypt支持泛域名证书,花了点时间把证书用到阿里云上了。
Let’s Encrypt的证书只有90天有效期,如果每次更新,都要手动操作。要想用的长久,就要想办法去自动更新,好处是其客户端已经能自动更新证书,我们要做的就是每次更新后部署到阿里云的CDN或SLB。
官方推荐的是certbot, 但谈到泛域名的支持,acme.sh是我知道的最快支持的,故而选择后者
git9527/aliyun-cdn-https-cert-updater
taichunmin/aliyun-slb-letsencrypt
具体参见官方文档,此处不累述。
shell脚本及注释如下
# 上传到CDN需要这个name,name相同会上传失败,这里每次带上时间戳
name=wzzcn_net_`date +%s`
# 阿里云的AccessKey
ali_key=xxxxx
ali_secret=xxxxxxxxxxxxxxxxxx
# 证书路径
key_file=/etc/ssl/my/wzzcn_net/key.pem
cert_file=/etc/ssl/my/wzzcn_net/cert.pem
# 上传证书到CDN,-d参数指定到哪个域名,我这里是到一个泛域名,灵活修改此参数
/usr/bin/python /usr/local/scripts/aliyun/cdn/updater.py -n $name -i $ali_key -s $ali_secret -p $key_file -c $cert_file -d .wzzcn.net
# 上传到SLB,需要指定SLB的ID
/usr/bin/python /usr/local/scripts/aliyun/slb/https.py -i $ali_key -s $ali_secret -p $key_file -c $cert_file -n $name -l "slb的ID" --zone "cn-shanghai"
存储到/etc/ssl/my/wzzcn_net/reload.sh
,并chmod +x /etc/ssl/my/wzzcn_net/reload.sh
增加执行权限
acme.sh --install-cert -d wzzcn.net --key-file /etc/ssl/my/wzzcn_net/key.pem --fullchain-file /etc/ssl/my/wzzcn_net/cert.pem --reloadcmd "/etc/ssl/my/wzzcn_net/reload.sh"
这个脚本是用来安装证书,之后证书每次更新,都会调用脚本来更新证书。