使用 Cloudflare API 自动化部署 SSL 证书:告别手动操作的烦恼

作为一名运维工程师,我深知 SSL 证书管理有多让人头疼。每次证书到期前的手动更新、部署测试,不仅耗时还容易出错。直到我开始使用 Cloudflare API 自动化这一流程,才发现原来证书管理可以如此轻松。今天我就分享这套经过实战检验的自动化方案。
准备工作:获取必要的 API 凭证
在开始之前,你需要准备好以下信息:
- Cloudflare 账户(确保域名已添加到 Cloudflare)
- Zone ID(在域名的 Overview 页面找到)
- API Key(从 My Profile → API Tokens 获取)
踩坑提示:确保 API Key 拥有 Zone.Zone 和 Zone.SSL 权限,否则后续操作会失败。
第一步:查询当前 SSL 证书设置
在修改任何设置前,最好先了解当前配置。这个步骤能帮你确认 API 连接正常:
curl -X GET "https://api.cloudflare.com/client/v4/zones/{zone_id}/settings/ssl"
-H "Authorization: Bearer {api_key}"
-H "Content-Type: application/json"
将 {zone_id} 和 {api_key} 替换为你的实际值。正常响应应该包含当前的 SSL 模式设置。
第二步:配置 SSL 证书模式
Cloudflare 提供多种 SSL 模式,我推荐使用 “full”(完全)模式,它在安全性和兼容性间取得了良好平衡:
curl -X PATCH "https://api.cloudflare.com/client/v4/zones/{zone_id}/settings/ssl"
-H "Authorization: Bearer {api_key}"
-H "Content-Type: application/json"
--data '{"value":"full"}'
实战经验:如果你需要更严格的加密,可以使用 “full_strict” 模式,但这要求你的源站服务器使用有效的 CA 签名证书。
第三步:设置 SSL 证书优先级(高级功能)
当你有多个证书时,这个功能特别有用。以下命令设置证书优先级:
curl -X PATCH "https://api.cloudflare.com/client/v4/zones/{zone_id}/ssl/certificate_packs/priority"
-H "Authorization: Bearer {api_key}"
-H "Content-Type: application/json"
--data '{"certificates":["{certificate_id_1}","{certificate_id_2}"]}'
第四步:自动化脚本整合
将上述命令整合到脚本中,配合 crontab 实现定期检查与更新:
#!/bin/bash
# 配置变量
ZONE_ID="your_zone_id"
API_KEY="your_api_key"
# 检查 SSL 设置
check_ssl() {
curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/settings/ssl"
-H "Authorization: Bearer $API_KEY"
-H "Content-Type: application/json"
}
# 更新 SSL 模式
update_ssl_mode() {
curl -s -X PATCH "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/settings/ssl"
-H "Authorization: Bearer $API_KEY"
-H "Content-Type: application/json"
--data '{"value":"full"}'
}
# 执行更新
echo "开始检查 SSL 设置..."
check_ssl
echo "更新 SSL 模式..."
update_ssl_mode
echo "操作完成"
常见问题与解决方案
在我实施过程中遇到的一些坑:
- 权限错误:检查 API Key 权限,确保包含 SSL 和 Zone 相关权限
- Zone ID 错误:在 Cloudflare 面板的域名概览页面确认正确的 Zone ID
- 速率限制:Cloudflare API 有请求限制,重要操作建议添加延时
通过这套自动化方案,我已经半年没有手动处理过 SSL 证书问题了。希望这个教程能帮你摆脱证书管理的烦恼,把时间花在更有价值的事情上。


太实用了!刚部署完,省了好多事 😊