跳转到内容
搜索文档

管理自定义证书

最后更新 查看 MarkdownAgent 设置

本页列出 Cloudflare 对自定义证书的要求,并说明如何使用 Cloudflare 仪表板或 API 上传和更新这些证书。

证书要求

在接受自定义证书之前,Cloudflare 会解析证书并根据一系列要求检查其有效性。

完整要求列表

您上传的每个自定义证书必须:

  • 使用 PEM 格式编码(PEM、PKCS#7 或 PKCS#12)。转换示例请参阅 Converting Using OpenSSL
  • 没有密钥文件密码
  • 距上传时间不少于 14 天到期。
  • 具有 subject alternative name (SAN),匹配上传所在 zone 中至少一个主机名。
  • 使用长度大于或等于最小值的私钥。目前 RSA 为 2048 位,ECDSA 为 225 位。
  • 被主流浏览器公开信任。这不适用于将 User Defined 指定为 bundle 方法 的证书。
  • 是以下证书类型之一:
    • Unified Communications Certificates (UCC)
    • Extended Validation (EV)
    • Domain Validated (DV)
    • Organization Validated (OV)

上传自定义证书

要在仪表板中上传自定义 SSL 证书:

  1. 在 Cloudflare 仪表板中,前往 Edge Certificates(边缘证书) 页面。

    Go to Edge Certificates ↗
  2. Edge Certificates(边缘证书) 中,选择 Upload Custom SSL Certificate(上传自定义 SSL 证书)

  3. 将相关值复制并粘贴到 SSL Certificate(SSL 证书)Private key(私钥) 文本区域(或选择 Paste from file(从文件粘贴))。

  4. 选择适当的 Bundle Method(捆绑方法)

  5. Private Key Restriction(私钥限制) 选择一个值。

  6. Legacy Client Support(旧版客户端支持) 选择一个值,该值指定 Server Name Indication (SNI) 支持:

    • Modern (recommended)(现代(推荐)):仅 SNI

    • Legacy(旧版):支持非 SNI

  7. 选择 Upload Custom Certificate(上传自定义证书)。如果您看到 The key you provided does not match the certificate 错误,请联系您的证书颁发机构以确保私钥与证书匹配。

  8. (可选)添加 CAA DNS 记录

以下调用将为 app.example.com 上传证书。Cloudflare 将自动将证书与针对浏览器最大兼容性优化的证书链捆绑。

  1. 更新文件并构建 payload
cat app_example_com.pem
-----BEGIN CERTIFICATE-----
MIIFJDCCBAygAwIBAgIQD0ifmj/Yi5NP/2gdUySbfzANBgkqhkiG9w0BAQsFADBN
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMScwJQYDVQQDEx5E
...
SzSHfXp5lnu/3V08I72q1QNzOCgY1XeL4GKVcj4or6cT6tX6oJH7ePPmfrBfqI/O
OeH8gMJ+FuwtXYEPa4hBf38M5eU5xWG7
-----END CERTIFICATE-----
MYCERT="$(cat app_example_com.pem|perl -pe 's/\r?\n/\\n/'|sed -e 's/..$//')"
MYKEY="$(cat app_example_com.key|perl -pe 's/\r?\n/\\n/'|sed -e's/..$//')"

将证书和密钥保存到环境变量(使用转义换行符)后,构建 payload:

request_body=$(< <(cat <<EOF
{
  "certificate": "$MYCERT",
  "private_key": "$MYKEY",
  "bundle_method": "ubiquitous"
}
EOF
))

您可以选择添加地理限制,指定私钥可以在哪些物理位置解密:

request_body=$(< <(cat <<EOF
{
  "certificate": "$MYCERT",
  "private_key": "$MYKEY",
  "bundle_method": "ubiquitous",
  "geo_restrictions": {"label": "us"}'
}
EOF
))

您还可以启用对 TLS 握手中不包含 SNI 的旧版客户端的支持。

request_body=$(< <(cat <<EOF
{
  "certificate": "$MYCERT",
  "private_key": "$MYKEY",
  "bundle_method": "ubiquitous",
  "geo_restrictions": {"label": "us"}',
  "type":"sni_custom"
}
EOF
))

Cloudflare 推荐使用 sni_custom。当特定客户端需要非 SNI 支持时使用 legacy_custom。Cloudflare API 默认将所有 Custom SSL 证书视为 Legacy。

  1. 上传证书和密钥

使用 POST 端点上传证书和密钥。

curl https://api.cloudflare.com/client/v4/zones/{zone_id}/custom_certificates \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" \
--header "Content-Type: application/json" \
--data "$request_body"
  1. (可选)添加 CAA 记录。

证书颁发机构授权(CAA)DNS 记录指定哪些证书颁发机构(CA)可以为域名签发证书。此记录降低了未经授权的证书签发的可能性,并促进组织内的标准化。

更多指导请参阅创建 CAA 记录


更新或续订现有自定义证书

要续订即将到期的自定义证书,或使用更新的密钥材料替换证书,请按照以下步骤操作。这是推荐的续订路径 — 它不会消耗额外的证书配额槽位,且避免停机。

在更新现有自定义证书之前,您可能希望激活 UniversalAdvanced 证书作为后备选项。前往 Edge Certificates(边缘证书) 页面查看 zone 中主机名列表和边缘证书状态。

如果您使用 Enterprise 计划并想更新自定义 (modern) 证书,还可以考虑申请 Staging environment (Beta) 访问权限。

按照这些步骤替换自定义证书不会导致任何停机。现有连接不会被终止,新连接将使用新证书。旧证书仅在新证书上传并激活后才会被实际删除。

要在仪表板中更新证书:

  1. 在 Cloudflare 仪表板中,前往 Edge Certificates(边缘证书) 页面。

    Go to Edge Certificates ↗
  2. Edge Certificates(边缘证书) 中,找到自定义证书并选择展开。

  3. 选择扳手按钮并选择 Replace SSL certificate and key(替换 SSL 证书和密钥)

  4. 按照与上传新证书相同的步骤操作。

要使用 API 更新证书,请发送 PATCH 命令。


删除自定义证书

  1. 在 Cloudflare 仪表板中,前往 Edge Certificates(边缘证书) 页面。

    Go to Edge Certificates ↗
  2. Edge Certificates(边缘证书) 中,找到自定义证书并选择展开。

  3. 选择叉号按钮。

  4. 选择 Confirm(确认) 删除证书。

这篇文档对您有帮助吗?