Cloudflare 利用API自选Let’s Encrypt/Google/Digicert,自由切换SSL证书颁发者

介绍

Cloudflare 目前 Free 计划提供四种证书, DigiCert 根证书(即 CF 的默认签发的证书,兼容性更广,证书链也更短,只有一级中间证书,证书为期一年更换)、 Let’s Encrypt 根证书(证书为其三个月更换,有被墙的黑历史,慎用)、 Google Trust Services 根证书(证书为其三个月更换,博主测试后发现 eu.org 配置后墙内无法使用,其他后缀无此问题,可选用), Sectigo 根证书(这个仅作为备份,不能主动启用),在控制台使用应该是随机分配的,没办法指定。

切换方法

博主在看 Cloudflare API 文档的时候,发现了一个参数 certificate_authority ,实验了一下,可以成功切换证书。

LINUX SSH 命令使用 PATCH 方法对 cloudflare 的 api 进行请求

1
2
3
4
5
6
7
8
9
curl -X PATCH "https://api.cloudflare.com/client/v4/zones/你的域名区域 ID/ssl/universal/settings" \

-H "X-Auth-Email: 你的 CF 邮箱" \

-H "X-Auth-Key: 你的 APIKEY" \

-H "Content-Type: application/json" \

--data '{"enabled":true,"certificate_authority":"digicert"}'

域名区域 ID – 域名 – 概述(右下) – API – 区域 ID;
APIKEY – 我的个人资料 – API 令牌 – API 密钥 – Global API Key – 查看

博主设置 curl 访问是切换到 digicert
如果想换到 Let's Encrypt 则修改其中的 digicertlets_encrypt
如果想换到 Google Trust Services 则修改其中的 digicertgoogle

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

响应出上面信息代表已经修改成功,可以去控制台也可以看到新的证书了;
把上面的”enabled”改为 false 提交一次,再改为 true 反复提交一次,刷新重新颁发证书;

或者在控制台 SSL/TLS – 边缘证书 – 禁用通用 SSL,先禁用,再启用,就会更新到新证书;

结语

博主自己使用 Cloudflare 自带的 DigiCert 根证书,因为其证书兼容性更广,证书链也更短,只有一级中间证书,访问速度相对较快。