Cloudflare 在今年五月开始使用 Google Trust Services 签发的 SSL 证书作为边缘的通用 SSL 证书及备份证书。根据 Cloudflare Docs 的描述,目前 Cloudflare 会使用 DigiCert(即将弃用), Let’s Encrypt, Google Trust Services 和 Sectigo 的 CA 来签发证书。那么有什么办法能够自行选择网站使用的 CA 提供商呢?
氪金:购买高级证书管理器
目前在 Cloudflare Dashboard 上的 SSL / TLS - 边缘证书中,存在着「Total TLS」的选项。这个选项仅对购买了高级证书管理器的用户开放,并且可以在「Select a Certificate Authority」处手动选择 CA.

利用 Cloudflare API 修改签发 CA
当然对于像我这样的人来说,每个月花 10 USD 去购买高级证书管理器显然是太为奢侈。于是在笔者搜索解决方案的时候,在 Cloudflare Community 发现了这个帖子: 「I want to use Google Trust’s SSL certificate instead of Let’s Encrypt - Cloudflare Community」。其中,Lumito 提供了一个可以通过 Cloudflare API 修改证书签发 CA 的方法。
准备
- Cloudflare 账号邮箱
- 域名 Zone ID
- Global Key
之后只需要在 Terminal 中通过以下命令创建请求即可。
For Linux / macOS
curl -sX PATCH "https://api.cloudflare.com/client/v4/zones/[DOMAIN_ZONE_ID_HERE]/ssl/universal/settings" -H "X-Auth-Email: [CLOUDFLARE_EMAIL_HERE]" -H "X-Auth-Key: [GLOBAL_API_KEY_HERE]" -H "Content-Type: application/json" --data '{"certificate_authority":"google"}'
For Windows
curl -sX PATCH "https://api.cloudflare.com/client/v4/zones/[DOMAIN_ZONE_ID_HERE]/ssl/universal/settings" -H "X-Auth-Email: [CLOUDFLARE_EMAIL_HERE]" -H "X-Auth-Key: [GLOBAL_API_KEY_HERE]" -H "Content-Type: application/json" --data "{\"certificate_authority\":\"google\"}"
该示例仅体现了将证书签发 CA 更改为 Google Trust Services 的方法,其他证书 CA 的名称可以自行探索(?
实际测试
笔者在昨天(10月15日)将博客接入了 Cloudflare, 但是默认给博客域名尝试签发了 Let's Encrypt 证书。遂通过 cURL 的方式请求 API 进行更改。

请求成功后返回 Cloudflare Dashboard, 笔者注意到证书签发 CA 已经成功切换,并且先前签发的 Let's Encrypt 证书则作为备用证书显示在列表中。

最后:好像也没什么好说的🤔
Update - Nov 20
如果源站为 Cloudflare Pages,则可能在切换签发 CA 后站点仍为 Let's Encrypt 的证书。(见评论区)
Comments 5 条评论
尝试了一下,面板里的确会有 Google 家的证书,但实际访问还是 Let’s Encrypt 颁发的🤔
最后还是通过禁用通用 SSL 后再开启才能刷新证书,虽说整到之后好像也没什么用(?@tara 我这边之前的话是通过 API 调整之后即时颁发证书生效的…就像本站的 SSL 证书一样
但是我这边几天前把 CV 域名接入 Cloudflare 之后也遇到了颁发证书后还是 Let’s Encrypt 的情况,不知道是为什么
刚才尝试了一下 Disable Universal SSL 之后重新 Enable 但是好像也没什么用的样子,就很神奇
试试去找一下 Cloudflare Support 问一下…?
@桜さくら 然后现在咱这再检查一下… 变成 Let’s Encrypt 了
或许和 CF Pages 有关,毕竟咱博客是部署在那边的(?@tara 可能确实跟 Cloudflare Pages 有关,因为我的 CV 也是放在 Pages 里的🤔…
@桜さくら 只不过应该也没什么大碍
,除非真在意证书所属的话大不了换个部署平台然后现在还没想到有哪个平台支持隐藏 URL 隐藏 .html 后缀,或者通过一些办法达到这个目的