How to Install Cloudflare Origin Certificate on VPS and Hosting

什么是 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 模式:

目标:在 Cloudflare 上启用 SSL 模式"Full (Strict)",然后在您的服务器上安装 Origin 证书。按照下面的步骤实现此配置。

步骤 1 — 生成 Cloudflare Origin 证书

在 Cloudflare 仪表板中,导航到 SSL/TLS → Origin Server:

  1. 点击"Create Certificate"
  2. 选择"Generate private key and CSR with Cloudflare"(最简单)或"Use my own private key and CSR"
  3. 指定主机名 — 例如 example.com 和 *.example.com
  4. 选择证书有效期(建议 15 年,因为续期需要重新安装)
  5. 点击"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

验证设置

经过身份验证的源拉取 — 额外的安全层

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 计划上都可用。了解每个计划包含的内容有助于您决定是否升级或保留免费计划以满足您的安全需求。

对大多数网站的要点:Cloudflare 免费计划 + Origin 证书 + Full (Strict) 模式提供企业级加密,无需额外成本。仅当您需要 Cloudflare 边缘上的自定义证书 (Business+) 或自动化证书生命周期管理 (Pro+) 时,您才需要升级。

安全检查清单:Cloudflare Origin 证书部署

使用此检查清单确认您的 Cloudflare Origin 证书部署完整且安全:

需要在没有 Cloudflare 的情况下工作的 SSL 证书?

AsiaGB 提供来自 RapidSSL、GeoTrust 和 DigiCert 的公开受信任的 SSL 证书 — DV SSL 从 1,000 THB/年起,通配符 SSL 从 5,000 THB/年起。无需 Cloudflare。

查看所有 SSL 证书