前言

话说用 Cloudflare 的免费版有个好处,就是证书不用自己操心,它自动给你安排得明明白白。

不过呢,免费计划里其实有三种证书可选:Let’s Encrypt、Google Trust Services、还有 SSL.com。它们都是三个月有效期的。

默认情况下 Cloudflare 会自动挑 Let’s Encrypt 或 Google Trust Services 用。但如果哪天你想换个口味,比如用 SSL.com,那就得自己动手改一改了——因为控制台没给这个选项,得用 API 来搞。

2025年3月更新:DigiCert 一年期证书已经没了,现在新增了 SSL.com 三个月期证书。

一、先把家伙准备好

搞之前得备齐三样东西:Zone ID邮箱Global API Key。没这些,后面玩不转。

1. Zone ID 在哪找?

  1. 登录 Cloudflare Dashboard
  2. 选中有问题的那个域名,点进去
  3. 左边菜单找 概述
  4. 页面右下角有个 API 区域,区域 ID 就在那儿,复制一下

2. Global API Key 怎么拿?

  1. 点右上角那个小人头 → 我的个人资料
  2. 左边菜单选 API 令牌
  3. 找到 API 密钥 这一栏
  4. Global API Key 后面的 查看
  5. 会让你验证邮箱,验证完复制 Key 就行

友情提醒:API Key 就相当于你的账号密码,可别随手发给别人!

二、开搞!敲命令换证书

打开终端,把下面这坨命令复制进去,记得把占位符换成你自己的信息:

1
2
3
4
5
curl -X PATCH "https://api.cloudflare.com/client/v4/zones/你的Zone_ID/ssl/universal/settings" \
-H "X-Auth-Email: 你的Cloudflare邮箱" \
-H "X-Auth-Key: 你的Global_API_Key" \
-H "Content-Type: application/json" \
--data '{"certificate_authority":"证书类型"}'

证书类型参数对照表

想用哪个 参数填啥
Let’s Encrypt lets_encrypt
Google Trust Services google
SSL.com ssl_com

拿 Let’s Encrypt 举例:

1
2
3
4
5
curl -X PATCH "https://api.cloudflare.com/client/v4/zones/你的Zone_ID/ssl/universal/settings" \
-H "X-Auth-Email: 你的Cloudflare邮箱" \
-H "X-Auth-Key: 你的Global_API_Key" \
-H "Content-Type: application/json" \
--data '{"certificate_authority":"lets_encrypt"}'

三、看看改成功没

执行完如果顺利,返回的 JSON 里 success 应该是 true

1
2
3
4
5
6
7
8
9
{
"result": {
"enabled": true,
"certificate_authority": "lets_encrypt"
},
"success": true,
"errors": [],
"messages": []
}

要是 success 变成 false 了,先检查一下命令里的参数填对了没有。

命令行快速验货

1
curl -Iv https://你的域名.com 2>&1 | grep "issuer"

这个能直接看到现在用的是哪个证书。

四、万一证书没更新怎么办

有时候改完网页显示的还是旧证书,别慌,强制刷新一下:

  1. 进 Cloudflare 控制台
  2. 找到 SSL/TLS边缘证书
  3. 先把 通用 SSL 关掉,等个几秒
  4. 再重新开启
  5. 清除浏览器缓存,打开网站看看

搞定收工!

证书换成你想要的了,接下来就不用操心了,Cloudflare 会自动续期的。