Cloudflare切换SSL证书颁发者
写这篇文章的缘由
Cloudflare 目前 Free 计划提供四种证书,一种是 DigiCert
根,一种是 ISRG Root X1
根,一种是 Google Trust Services
根,一种是 Sectigo
根(仅作为备份,不能主动启用),在控制台使用应该是随机分配的,没办法指定.
然后在看 Cloudflare API 文档的时候,发现了一个文档没有提及的参数 certificate_authority
,实验了一下,可以成功切换证书.
为啥要更换证书提供者
在 ISRG Root X1
下签发的证书,由于使用了新的 ECC 证书,所以为了兼容性必须附带两级中间证书.
1 |
|
而 DigiCert
下签发的证书兼容性更广,证书链也更短,只有一级中间证书.
(2022-10-28 更新:即将停用)
1 |
|
并且 Let’s Encrypt 在国内还有 OCSP 验证服务器被墙的问题
如何使用
使用 PATCH
方法对 cloudflare 的 api 进行请求
1 |
|
如上的 curl 访问是切换到 DigiCert
。
如果想换到 Let's Encrypt
则修改其中的 digicert
为 lets_encrypt
如果想换到 Google Trust Services
则修改其中的 digicert
为 google
如果想换到 Sectigo
则修改其中的 digicert
为 sectigo
(暂不能切换到 Sectigo 会返回 You do not have the entitlements to switch to sectigo
)
返回
1 |
|
就代表成功了,去控制台也可以看到新的证书了~
如果没有切换,表示原证书还可以使用,这时候开关一下就可以让 cf 刷新重新颁发证书
把上面的”enabled”改为 false 提交一次,再改为 true 提交一次
1 |
|