之前写过一个使用OHTTPS自动更新证书并上传到多吉云CDN更新证书的python脚本,现在觉得还是不够优雅,毕竟OHTTPS收费,还要用到fastapi一直开着,于是就用ACME来搞,一样很简单
首先是安装ACME
curl https://get.acme.sh | sh -s [email protected]
然后进入到acme目录下
现在acme默认使用的是zerossl,这个我也比较推荐,他没有申请时间限制,于是注册zerossl然后获取api
注册完成登录,点左侧Developer,然后复制Key,接着获取eab-credentials
apt install jq
curl -s -X POST "https://api.zerossl.com/acme/eab-credentials?access_key=复制的key" | jq
一般会得到下面的json
{
"success": true,
"eab_kid": "eab_kid字符串",
"eab_hmac_key": "eab_hmac_key字符串",
}
保存下来一会要用到
然后在acme目录逐行下输入以下命令
acme.sh --register-account --server zerossl \
--eab-kid eab_kid字符串 \
--eab-hmac-key eab_hmac_key字符串
正常回复的内容是
[Sun 19 May 2024 10:24:32 PM CST] Create account key ok.
[Sun 19 May 2024 10:24:33 PM CST] Registering account: https://acme.zerossl.com/v2/DV90
[Sun 19 May 2024 10:24:36 PM CST] Registered
[Sun 19 May 2024 10:24:36 PM CST] ACCOUNT_THUMBPRINT='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
这时候就可以申请SSL证书了,我使用了dnspod的API,好像这样才能自动续期
在账户中心 - API密钥 - DNSPod Token,创建时将ID和Token保存下来,Token只能创建时显示,只会显示这一次
然后在终端输入以下命令
export DP_Id="保存的ID"
export DP_Key="保存的Token"
这时候账号并没有真的保存,接下来申请证书,还是终端输入
acme.sh --issue --dns dns_dp -d kseas.cn -d *.kseas.cn
我申请的是通配符证书,这个证书包含了*.kseas.cn和kseas.cn,前面是通配符证书,但是不能适用于kseas.cn,因为这个并没有前缀,所以需要加上kseas.cn,这样就可以了
如果配置正确,等待一会会看到下面的结果
[Sun 19 May 2024 10:49:16 PM CST] Your cert is in: /root/.acme.sh/kseas.cn_ecc/kseas.cn.cer
[Sun 19 May 2024 10:49:16 PM CST] Your cert key is in: /root/.acme.sh/kseas.cn_ecc/kseas.cn.key
[Sun 19 May 2024 10:49:16 PM CST] The intermediate CA cert is in: /root/.acme.sh/kseas.cn_ecc/ca.cer
[Sun 19 May 2024 10:49:16 PM CST] And the full chain certs is there: /root/.acme.sh/kseas.cn_ecc/fullchain.cer
说明证书申请成功了,接下来就是如何自动上传到多吉云
这个脚本和OHTTPS的差不多,也用到了数据库,因为买的云数据库闲着也是闲着,你们也可以不使用,反正也不难,可以自己改代码
代码放Github,用得到记得点一个star
首先需要将数据库里面的id改成你在多吉云当前证书的ID
数据库自己创建吧,ID是主键,account是手机号,domain是域名,我搞手机号主要是因为我有两个号,都用这个域名,所以每个号都要部署
接下来你们可以跟着我操作,看得懂的也可以自己
将python脚本放在
/home/ssl
创建文件夹
/home/ssl/kseas.cn
然后还是在acme目录下执行以下命令
acme.sh --install-cert -d kseas.cn \
--key-file /home/ssl/kseas.cn/key.pem \
--fullchain-file /home/ssl/kseas.cn/cert.pem \
--reloadcmd "python3 /home/ssl/local.py -d *.kseas.cn -c /home/ssl/kseas.cn/cert.pem -k /home/ssl/kseas.cn/key.pem"
执行后就可以去多吉云看证书是否绑定成功了,正常应该显示在部署中,证书里面也可以看到新上传的证书
按照acme的说法,证书到期前,会自动更新,到时候好像是会自动执行上面的命令,如此一来就可以不用管了,我这个脚本专门放在了香港的服务器上,正常应该没问题,不会受到网络的影响申请不到证书,也可以在python里面加上钉钉提醒,也可以写其他地方的CDN进去一起上传,比如腾讯云 阿里云,网上脚本很多,改一下即可