跳转到内容
搜索文档

故障排除

最后更新 查看 MarkdownAgent 设置

如果在配置并嵌入客户端 SSL 证书后查询仍返回错误,请检查以下设置。


检查 SSL/TLS 握手

在终端中,使用以下命令检查客户端与 API 端点之间是否可以成功建立 SSL/TLS 连接。

curl --verbose --cert /path/to/certificate.pem --key /path/to/key.pem https://your-api-endpoint.com

如果无法完成 SSL/TLS 握手,请检查证书和私钥是否正确。 如果握手完成但请求仍被阻止,请确认 Cloudflare 正在验证客户端证书。


检查 mTLS 主机

检查是否已为正确的主机启用 mTLS。主机应与您要保护的 API 端点匹配。


检查 mTLS 规则

要检查 mTLS 规则,请考虑以下步骤。更多指导请参阅自定义规则

  1. 在 Cloudflare 仪表板中,前往 Security rules(安全规则) 页面。

    Go to Security rules ↗
  2. 在特定规则上,选择 Edit(编辑)

  3. 在该规则上,检查:

    • Expression Preview 是否正确。

    • 如果定义了主机名,是否与您的 API 端点匹配。例如,对于 API 端点 api.trackers.ninja/time,规则应类似于:

      (http.host in {"api.trackers.ninja"} and not cf.tls_client_auth.cert_verified)
  4. 要编辑规则,请使用用户界面或选择 Edit expression(编辑表达式)


高级调试

您可以使用 Cloudflare Workers 调试客户端证书验证失败。

  1. 创建一个 Worker 以调试打印 cf.properties

    export default {
      async fetch(request, env, ctx) {
        console.info({ message: JSON.stringify(request.cf, null, 2) });
        return new Response(JSON.stringify(request.cf, null, 2))
      }
    };
  2. 使用 Worker 路由自定义域将该 Worker 与已启用 mTLS 的主机名关联。

  3. 向已配置的主机名和/或路径发起请求,分别在发送和不发送 mTLS 客户端证书的情况下进行。

  4. Observability 仪表板上查看日志,并将响应与下面列出的预期值进行比较。

    Go to Observability ↗
  • 有效证书

    "tlsClientAuth": {
      "certPresented": "1",
      "certVerified": "SUCCESS",
    },
  • 无效证书(例如自签名证书)

    "tlsClientAuth": {
      "certPresented": "1",
      "certVerified": "FAILED:self signed certificate",
    },
  • 无证书

    "tlsClientAuth": {
      "certPresented": "0",
      "certVerified": "NONE",
    },

这篇文档对您有帮助吗?