云和 CDN
Cloudflare Origin CA 源站证书安装教程
在 Cloudflare 控制台创建免费的 Origin CA 证书,装到源站 Nginx 上,再把 SSL/TLS 加密模式切到 Full (strict),Cloudflare 到源站这一段就会加密并校验证书。访客看到的仍是 Cloudflare 的边缘证书。
适用于截至 2026 年 11 月的所有 Cloudflare 套餐和 Nginx 源站,同样的证书文件也能用在 Apache 等服务器上。控制台菜单名按英文界面写,中文界面里是对应的译名。
两段连接、两张证书
访客到 Cloudflare 是一段,Cloudflare 到源站是另一段,Origin CA 证书只管后一段。
访客浏览器看到的是 Cloudflare 边缘节点上的证书(Universal SSL 等),由 Cloudflare 签发和续期,你不用管。Cloudflare 再去连你的源站时,源站要出示一张证书;如果这段不加密或者不校验,中间链路上的人就能看到或篡改流量。Origin CA 证书就是为这一段准备的:免费、有效期长,但只有 Cloudflare 信任它。
国内用户常见的场景是源站放在海外 VPS 上、前面套 Cloudflare。这种用法适合 Origin CA,但有两点限制:
- 中国网络是另一回事:Cloudflare 在中国大陆的数据中心由合作伙伴京东云运营,叫中国网络(China Network),只作为企业版的单独订阅提供,而且并非所有产品都能用。每个根域名都要有有效的 ICP 备案(非经营性网站)或 ICP 许可证(经营性网站),备案号要显示在网页底部,域名还必须支持 IPv6。官方的可用产品列表里列出了边缘证书和 Authenticated Origin Pulls,但没有单独提到 Origin CA,企业客户请以 Cloudflare 的说明为准。
- 源站在国内的同样要备案:所有在中国大陆运行的网站都需要 ICP 备案,前面套了 Cloudflare 并不改变这一点。国内云厂商可能在不另行通知的情况下关停没有备案的网站。
前提条件
域名必须已经接入 Cloudflare 代理。
- 域名在 Cloudflare 上处于活跃状态,
example.com和www.example.com的A/AAAA记录已开启代理(橙色云朵),指向源站,例如203.0.113.10。 - 源站运行 Nginx,443 端口允许 Cloudflare 访问。
- 能登录这个域名的 Cloudflare 控制台。
第一步:创建 Origin CA 证书
Origin CA 证书在 Cloudflare 控制台里创建,有效期最长 15 年。进入 SSL/TLS → Origin Server → Create Certificate,选择 Generate private key and CSR with Cloudflare,密钥类型选 ECC 或 RSA,主机名填 example.com 和 *.example.com,有效期按需选择。点 Create,格式选 PEM,把 Origin Certificate 和 Private Key 都复制下来。私钥只显示这一次,关掉页面后无法再查看。
第二步:安装到源站
把证书和私钥保存成两个文件,在 Nginx 的 443 站点里引用:
sudo mkdir -p /etc/ssl/cloudflare
sudo nano /etc/ssl/cloudflare/example.com.pem # 粘贴 Origin Certificate
sudo nano /etc/ssl/cloudflare/example.com.key # 粘贴 Private Key
sudo chmod 600 /etc/ssl/cloudflare/example.com.key
server {
listen 443 ssl;
http2 on; # nginx 1.25.1 及以上
server_name example.com www.example.com;
ssl_certificate /etc/ssl/cloudflare/example.com.pem;
ssl_certificate_key /etc/ssl/cloudflare/example.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
root /var/www/example.com;
}
sudo nginx -t && sudo systemctl reload nginx
宝塔、1Panel 用户可以在站点的 SSL 页面里选择“使用已有证书”一类的选项,把证书和私钥分别粘贴进去,见 宝塔面板配置 SSL 证书。面板上看到的颁发者会是 Cloudflare 的 Origin CA。浏览器不信任这家私有 CA,但只要访客流量都经过 Cloudflare 代理,就不影响使用。注意别让面板的 Let's Encrypt 自动续签去覆盖这张证书,两者只能选一个。
第三步:切换到 Full (strict)
在 SSL/TLS → Overview 里把加密模式设为 Full (strict),此后 Cloudflare 每次连接源站都会校验证书。不要用 Flexible:它让 Cloudflare 用明文连源站,源站再做 HTTPS 跳转时还很容易形成重定向死循环。
第四步:HTTP 跳转并限制源站
打开 SSL/TLS → Edge Certificates → Always Use HTTPS,让访客在边缘就被跳转到 HTTPS,同时去掉源站上可能引起循环的 80 端口跳转。还可以开启 Authenticated Origin Pulls,让源站只接受来自 Cloudflare 的 TLS 连接:按 Cloudflare 文档下载它的客户端 CA,在 Nginx 里加上 ssl_client_certificate 和 ssl_verify_client on;。再进一步,可以在源站防火墙里只放行 Cloudflare 的 IP 段。
验证
公网检查看到的是 Cloudflare 的边缘证书,也就是访客看到的那张。用 SSL 证书检查,或在终端运行:
curl ssl.sh/example.com
要检查源站证书本身,直接连源站 IP:
openssl s_client -connect 203.0.113.10:443 -servername example.com </dev/null 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates
颁发者是 Cloudflare 的 Origin CA,浏览器直连时不会信任它,这是正常的。
自动续期
两张证书的续期方式不同。边缘证书(Universal SSL)由 Cloudflare 自动签发和续期。Origin CA 证书不会自己续期:到你选定的日期就过期,之后 Full (strict) 模式下 Cloudflare 会返回 526 错误。把到期日写进监控,提前按第一、二步换新证书;想自动化的话,Cloudflare 也提供创建 Origin CA 证书的 API。边缘一侧可以把主机名加到 ssl.sh 监控(开发中)。
如果你更希望源站证书也能被浏览器信任、方便随时暂停 Cloudflare,就改用 Let's Encrypt:Certbot + Cloudflare DNS 或 acme.sh DNS API 都能在不开放 80 端口的情况下申请通配符证书。注意 Let's Encrypt 默认证书 2027 年 2 月 10 日起改为 64 天,必须全自动续期。
常见问题排查
- 526 Invalid SSL certificate:源站证书过期、没有覆盖这个主机名,或 Nginx 实际出示的是别的证书,用上面的
openssl s_client命令检查。 - 525 SSL handshake failed:Nginx 没有在 443 上启用 TLS,或者和 Cloudflare 没有共同支持的协议版本。
- 访客看到不受信任的证书:DNS 记录没开代理(灰色云朵),浏览器直接连到了源站,见 NET::ERR_CERT_AUTHORITY_INVALID。
- ERR_TOO_MANY_REDIRECTS:SSL 模式是 Flexible,源站又跳转到 HTTPS,改成 Full (strict)。
- 开启 HTTPS 后提示混合内容:见 混合内容警告。
常见问题
源站用 Origin CA 证书还是 Let's Encrypt?
Origin CA 证书多年不用续期,但只能在 Cloudflare 代理后面用。Let's Encrypt 证书是公网信任的,哪天暂停 Cloudflare 源站也照样能用,代价是要跑 ACME 客户端;用 Certbot + Cloudflare DNS 申请不需要开放 80 端口。
为什么报 526 错误?
Full (strict) 模式下,源站证书对 Cloudflare 来说无效时就会返回 526:证书过期、是自签名的,或者没有覆盖这个主机名。给这个主机名装上 Origin CA 证书或有效的公网证书即可。
200 天的证书有效期上限对 Origin CA 证书有效吗?
不适用。CA/浏览器论坛的上限针对公网信任的证书;Cloudflare Origin CA 是只被 Cloudflare 信任的私有 CA,所以能签发最长 15 年的证书。
用 Cloudflare 能让国内访客走国内节点吗?
只有订阅了中国网络才行。中国网络是企业版客户单独购买的服务,由京东云运营境内数据中心,每个根域名都要有有效的 ICP 备案或许可证,并且必须支持 IPv6。普通套餐不包含这项服务。