警告:按照本文操作可能会出现服务中断,在操作之前一定要考虑清楚。

为什么要切换Cloudflare边缘证书?

由于使用CNAME接入Cloudflare,有两个域名是使用的Let’s Encrypt,但发现一些问题:

  • 因为只有3个月有效期,需要经常更换证书。
  • 由于Cloudflare或Let’s Encrypt更改政策需要TXT验证。

于此产生更换一年证书的想法。

具体操作

前期准备

需要在Cloudflare上获取对应的域名区域 ID和账户Global API Key密钥

代码

curl -X PATCH "https://api.cloudflare.com/client/v4/zones/域名区域ID/ssl/universal/settings" \
     -H "Content-Type: application/json" \
     -H "X-Auth-Email: 账户邮箱" \
     -H "X-Auth-Key: Global API Key密钥" \
     --data '{"certificate_authority": "digicert"}'

digicert:要申请的证书名称,还可以替换为sectigo(提示无权限)和lets_encrypt。

后续操作

将上面代码修改并执行后,就可以使用新证书了。在设置新的子域名前要先开启“禁用通用 SSL”, 否则还会使用Let’s Encrypt,在等待1~2分钟再关闭“禁用通用 SSL”,就可以使用新的证书了。

注意事项

在证验证时,可能会出现验证错误,可以先将域名NS设置为Cloudflare的,在证书申请完成后再改回自用的。