用api把cloudflare的证书换成自家一年的

cloudflare目前的话提供了四种证书,一种是自家一年的,还有let's的,谷歌的,都是三个月的,还有setcigo的三个月的,但是怎么没见到,之前的话一直都是一年的证书,现在基本上都是三个月的,主要是let's和谷歌的两种,,其实我们可以利用api来切换这,参考cloudflare的文档里的certificate authority
https://developers.cloudflare.com/ssl/reference/certificate-authorities/
来切换四种证书,其实也可以完全不管,因为都是自动签的,let's的证书的话可能会导致部分旧平台,比方说旧安卓手机和win7的电脑兼容性不好,还有国产的360浏览器不把它添加进信任列表,所以切不切其实看你自己了
下面介绍两种办法来切证书,其实都是发起api来的,本质上一样的,只是第一种稍微简单点
首先都要申请global api key
https://dash.cloudflare.com/profile/api-tokens
img
第一种方法
dnsfalre,这个是我之前用来修改以前cfp的cname接入的域名时候发现的,具体怎么玩可以参考这个大佬的博客https://luotianyi.vc/6415.html,可以自己部署,我们这次只是用来修改证书
作者github的项目地址https://github.com/5aaee9/Dnsflare
我们直接用作者的演示站就行了,是本地浏览器发起api请求的
打开https://dnsflare-indexyz.vercel.app/
输入你的邮箱和global api key
点击提交登录
img
选择你的域名
点击下面的证书供应商,就可以切换你的域名的证书了,选择digicert就是cf自家的一年的了,let's和谷歌的话就是三个月的,有cf自家当然选cf自家的了
img
img
这时候我们去cf的后台,就可以看到cf的自家的一年证书已经签发了
img

第二种,
打开cf你的域名,域名那边有个域名区域id,要用的
img
然后在小鸡的ssh上打下面的命令

curl -sX PATCH "https://api.cloudflare.com/client/v4/zones/你的域名区域id/ssl/universal/settings" -H "X-Auth-Email:你的邮箱" -H "X-Auth-Key:你的global api key" -H "Content-Type: application/json" --data "{\"certificate_authority\":\"digicert\"}"

换成谷歌的话就把digicert换成google

curl -sX PATCH "https://api.cloudflare.com/client/v4/zones/你的域名区域id/ssl/universal/settings" -H "X-Auth-Email:你的邮箱" -H "X-Auth-Key:你的global api key" -H "Content-Type: application/json" --data "{\"certificate_authority\":\"google\"}"

换成let's的digicert 为 lets_encrypt

curl -sX PATCH "https://api.cloudflare.com/client/v4/zones/你的域名区域id/ssl/universal/settings" -H "X-Auth-Email:你的邮箱" -H "X-Auth-Key: 你的global api key" -H "Content-Type: application/json" --data "{\"certificate_authority\":\"lets_encrypt\"}"

如果出现以下结果的话,就是成功了

{"result":{"enabled":true,"certificate_authority":"lets_encrypt"},"success":true,"errors":[],"messages"

如果没反应的话,打开cf的控制台,禁用通用ssl,然后再打命令,然后再启用,反复多试几次就行了
img