自定义 Cloudflare 的边缘证书签发 CA

发布于 2022-10-16  644 次阅读


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 的证书。(见评论区)

  • alipay_img
届ける言葉を今は育ててる
最后更新于 2024-03-25