
什么是 Cloudflare Origin 证书?
Cloudflare Origin 证书是由 Cloudflare 专门颁发的免费 SSL 证书,用于保护 Cloudflare 边缘网络和您的源服务器之间的连接。与 Let's Encrypt 等公共 CA 颁发的证书不同,Cloudflare Origin 证书仅受 Cloudflare 信任 — 如果用户直接绕过 Cloudflare 连接到您的服务器,浏览器将显示"证书不受信任"警告。
当正确使用 Cloudflare 后端且 SSL 模式设置为"Full (Strict)"时,Origin 证书可以保护连接的两个部分:访问者 → Cloudflare(通过 Cloudflare 的通用 SSL)和 Cloudflare → 您的服务器(通过 Origin 证书)。这是获得最大安全性的推荐配置。
理解 Cloudflare SSL 模式
安装 Origin 证书之前,请理解四种 Cloudflare SSL 模式:
- Off — 完全没有 SSL。所有流量都是未加密的 HTTP。不要使用。
- Flexible — 访问者和 Cloudflare 之间使用 HTTPS,但 Cloudflare 通过 HTTP 连接到您的服务器。Cloudflare 和您的服务器之间的数据未加密。不推荐。
- Full — 对两个部分进行加密,但不验证您服务器的证书(接受自签名证书)。比 Flexible 更好。
- Full (Strict) — 对两个部分进行加密并验证您服务器的证书。需要有效的 Origin 证书或您服务器上的受信任 SSL。这是推荐的模式。
目标:在 Cloudflare 上启用 SSL 模式"Full (Strict)",然后在您的服务器上安装 Origin 证书。按照下面的步骤实现此配置。
步骤 1 — 生成 Cloudflare Origin 证书
在 Cloudflare 仪表板中,导航到 SSL/TLS → Origin Server:
- 点击"Create Certificate"
- 选择"Generate private key and CSR with Cloudflare"(最简单)或"Use my own private key and CSR"
- 指定主机名 — 例如
example.com和*.example.com - 选择证书有效期(建议 15 年,因为续期需要重新安装)
- 点击"Create"
Cloudflare 生成 Origin 证书和私钥。立即保存两个文件 — 私钥不会再次显示。
步骤 2 — 在您的服务器上保存证书文件
mkdir -p /etc/ssl/cloudflare
nano /etc/ssl/cloudflare/cert.pem # 粘贴 Origin 证书
nano /etc/ssl/cloudflare/key.pem # 粘贴私钥
chmod 644 /etc/ssl/cloudflare/cert.pem
chmod 600 /etc/ssl/cloudflare/key.pem
步骤 3A — 在 Nginx 上安装
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/ssl/cloudflare/cert.pem;
ssl_certificate_key /etc/ssl/cloudflare/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
# ... your site configuration ...
}
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
nginx -t && systemctl reload nginx
步骤 3B — 在 Apache 上安装
<VirtualHost *:443>
ServerName example.com
SSLEngine on
SSLCertificateFile /etc/ssl/cloudflare/cert.pem
SSLCertificateKeyFile /etc/ssl/cloudflare/key.pem
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite HIGH:!aNULL:!MD5
# ... DocumentRoot and other directives ...
</VirtualHost>
apachectl configtest && systemctl reload apache2
步骤 4 — 在 Cloudflare 上将 SSL 模式设置为 Full (Strict)
返回 Cloudflare 仪表板 → SSL/TLS → Overview 并选择"Full (Strict)"。这是最关键的一步 — 没有它,Cloudflare 可能仍然通过 HTTP 连接到您的源,不管您的证书安装如何。
警告:在切换到 Full (Strict) 之前,确认 Origin 证书已正确安装在您的服务器上。在没有有效服务器证书的情况下切换到此模式将立即中断您的网站。
步骤 5 — 下载 Cloudflare 根 CA(可选但推荐)
curl -o /etc/ssl/cloudflare/origin-pull-ca.pem \
https://developers.cloudflare.com/ssl/static/authenticated_origin_pull_ca.pem
验证设置
- 在浏览器中打开您的网站 — 应该会显示挂锁图标
- 运行 SSL Labs Test 检查您的 SSL 等级
- 在 Cloudflare 仪表板 → SSL/TLS → Edge Certificates 中,确认通用 SSL 处于活跃状态
- 测试 HTTP 重定向:
curl -I http://example.com应该返回 301/302
经过身份验证的源拉取 — 额外的安全层
Cloudflare 的"Authenticated Origin Pulls"功能配置您的服务器仅接受来自 Cloudflare 的 HTTPS 连接,防止发现您源 IP 的攻击者完全绕过 Cloudflare:
# Nginx — 验证来自 Cloudflare 的客户端证书
ssl_client_certificate /etc/ssl/cloudflare/origin-pull-ca.pem;
ssl_verify_client on;
然后在 Cloudflare 仪表板 → SSL/TLS → Origin Server → Authenticated Origin Pulls → Enable 中启用。
常见问题
Cloudflare Origin 证书与 Let's Encrypt 有什么不同?
Let's Encrypt 是所有浏览器都信任的公共 CA — 它适用于有无 Cloudflare 的情况。Cloudflare Origin 证书仅受 Cloudflare 信任。如果您从 Cloudflare 中删除您的域,您必须将 Origin 证书替换为公开受信任的证书,如 Let's Encrypt 或付费 SSL。
我可以在共享主机上使用 Origin 证书吗?
这取决于您的主机提供商是否支持自定义 SSL 安装。在基于 DirectAdmin 的主机(如 AsiaGB)上,您可以通过 DirectAdmin 中的 SSL/TLS Manager 上传自定义证书。联系您的主机提供商进行确认。
Origin 证书过期时会发生什么?
在 Cloudflare 仪表板中生成新证书并替换服务器上的文件。要最小化维护,在创建证书时选择 15 年的有效期。
Cloudflare SSL 和 WordPress:常见配置问题
在 Cloudflare 后面运行的 Origin 证书 WordPress 网站需要一些额外的配置步骤,这些步骤并不总是显而易见的。跳过这些可能会导致重定向循环、混合内容警告或页面显示不正确,即使 SSL 证书在技术上已正确安装。
将 WordPress 网站 URL 设置为 HTTPS
在 require 'wp-settings.php' 行之前将这些行添加到 wp-config.php 以强制 WordPress 在整个网站中生成 HTTPS 链接:
define('WP_HOME', 'https://yourdomain.com');
define('WP_SITEURL', 'https://yourdomain.com');
修复由 Flexible SSL 模式引起的重定向循环
最常见的 Cloudflare+WordPress 重定向循环发生在 Cloudflare SSL 模式设置为"Flexible"而 WordPress 同时强制 HTTPS 时。修复方法是按照本指南中所述切换到"Full (Strict)"。或者,如果您必须临时使用 Flexible,请将以下内容添加到 wp-config.php 以告诉 WordPress 来自 Cloudflare 的传入请求已经是 HTTPS:
// 在 require 'wp-settings.php' 之前添加
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])
&& $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
解决混合内容警告
将 WordPress 网站 URL 切换为 HTTPS 后,较旧的帖子和页面可能仍然包含嵌入在其内容中的 http:// URL,导致浏览器中出现混合内容警告。使用 Better Search Replace 插件或 WP-CLI 一次更新所有数据库引用:
# 在 WordPress 数据库中将所有 HTTP URL 替换为 HTTPS
wp search-replace 'http://yourdomain.com' 'https://yourdomain.com' \
--skip-columns=guid --report-changed-only
在 SSL 证书过期前监控它
即使有 15 年的 Origin 证书,设置对基础设施中所有 SSL 证书的监控也是一个很好的做法。过期的证书会立即向每个访问者显示浏览器错误,没有警告 — 主动监控可以完全防止这种情况。
| 监控方法 | 成本 | 最适合 |
|---|---|---|
| Cloudflare 仪表板警报 | 免费 | 仅限 Cloudflare Origin 证书 |
| SSL Labs API | 免费 | 等级检查 + 过期日期审计 |
| openssl CLI 通过 cron | 免费 | 每日自动检查及电子邮件警报 |
| 正常运行时间监控服务 | 免费/付费 | 组合的正常运行时间 + SSL 过期跟踪 |
一个快速的 shell 单行命令来检查您的实时证书的过期日期:
# 通过 openssl 检查 SSL 证书过期日期
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null \
| openssl x509 -noout -dates
Cloudflare SSL 功能计划比较
Origin 证书在包括免费套餐在内的每个 Cloudflare 计划上都可用。了解每个计划包含的内容有助于您决定是否升级或保留免费计划以满足您的安全需求。
- Free Plan: Universal SSL, Origin Certificate, Full (Strict) mode, Always Use HTTPS, HSTS, Minimum TLS Version — everything covered in this guide is included at no cost
- Pro Plan ($20/month): Adds Advanced Certificate Manager (ACM), allowing custom TLS certificates and automated certificate renewal management
- Business Plan ($200/month): Adds Custom SSL Upload — you can bring an externally purchased SSL certificate (e.g., a paid Wildcard from DigiCert) and install it directly on Cloudflare's edge
- Enterprise: Dedicated SSL Certificate, custom certificate bundles, multi-level subdomain Wildcard support
对大多数网站的要点:Cloudflare 免费计划 + Origin 证书 + Full (Strict) 模式提供企业级加密,无需额外成本。仅当您需要 Cloudflare 边缘上的自定义证书 (Business+) 或自动化证书生命周期管理 (Pro+) 时,您才需要升级。
安全检查清单:Cloudflare Origin 证书部署
使用此检查清单确认您的 Cloudflare Origin 证书部署完整且安全:
- Origin 证书在 Cloudflare 仪表板中生成并保存到
/etc/ssl/cloudflare/,具有正确的权限(cert.pem= 644、key.pem= 600) - 网络服务器(Nginx 或 Apache)配置为证书路径并无错误地重新加载
- Cloudflare SSL 模式设置为 Full (Strict)
- 在 Cloudflare Edge Certificates 设置中启用"Always Use HTTPS"
- 启用 HSTS,Max Age 至少为 6 个月
- 启用经过身份验证的源拉取并安装
origin-pull-ca.pem(可选但推荐) - 防火墙规则限制仅 Cloudflare IP 范围的 443 端口(可选以获得最高安全性)
- SSL Labs 测试显示 A 级或更高
- 浏览器挂锁可见,浏览器控制台中没有混合内容警告
需要在没有 Cloudflare 的情况下工作的 SSL 证书?
AsiaGB 提供来自 RapidSSL、GeoTrust 和 DigiCert 的公开受信任的 SSL 证书 — DV SSL 从 1,000 THB/年起,通配符 SSL 从 5,000 THB/年起。无需 Cloudflare。
查看所有 SSL 证书