警告:按照本文操作可能会出现服务中断,在操作之前一定要考虑清楚。
为什么要切换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的,在证书申请完成后再改回自用的。