You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CockroachDB是否支持双向mTLS?含SQL服务及Changefeeds场景需求

CockroachDB双向mTLS支持及配置方案

CockroachDB完全支持双向mTLS(双向TLS认证),不管是SQL服务端的接入认证,还是Changefeeds发起对外请求时的客户端认证,都可以基于指定根证书实现双向验证。

一、SQL服务的双向mTLS配置

要让SQL服务强制要求客户端提供由指定根CA签发的证书,需在启动CockroachDB节点时配置以下参数:

  • --sql-tls-cert:SQL服务端证书路径(由指定根CA签发)
  • --sql-tls-key:服务端证书对应的私钥路径
  • --sql-tls-ca-cert:用于验证客户端证书的根CA证书路径
  • --sql-require-client-cert=true:启用客户端证书强制验证,拒绝无有效客户端证书的连接

示例启动命令:

cockroach start \
  --sql-tls-cert=/certs/server.crt \
  --sql-tls-key=/certs/server.key \
  --sql-tls-ca-cert=/certs/rootCA.crt \
  --sql-require-client-cert=true \
  --listen-addr=0.0.0.0:26257 \
  --sql-addr=0.0.0.0:26258 \
  ...

配置完成后,SQL客户端必须携带由同一根CA签发的客户端证书才能连接,例如:

cockroach sql \
  --host=node-ip:26258 \
  --user=admin \
  --cert=/client-certs/client.crt \
  --key=/client-certs/client.key \
  --cacert=/client-certs/rootCA.crt

二、Changefeeds对外请求的双向mTLS配置

Changefeeds在向外部服务(如Kafka、HTTP端点)发送数据时,可配置双向TLS,确保请求携带客户端证书,同时验证目标服务的证书有效性。

1. Kafka Changefeeds

创建Changefeeds时指定TLS相关参数:

  • kafka_tls_enabled=true:启用Kafka TLS
  • kafka_tls_ca_cert:指定根CA证书内容或文件路径
  • kafka_tls_client_cert:客户端证书内容或文件路径
  • kafka_tls_client_key:客户端私钥内容或文件路径

示例语句:

CREATE CHANGEFEED FOR TABLE my_db.my_table
INTO 'kafka://kafka-broker:9092/my_topic'
WITH (
  kafka_tls_enabled = true,
  kafka_tls_ca_cert = '/certs/rootCA.crt',
  kafka_tls_client_cert = '/certs/changefeed-client.crt',
  kafka_tls_client_key = '/certs/changefeed-client.key',
  format = 'json'
);

2. HTTP Changefeeds

针对HTTP输出目标,使用以下参数配置双向TLS:

  • http_tls_enabled=true:启用HTTP TLS
  • http_tls_ca_cert:根CA证书内容或路径
  • http_tls_client_cert:客户端证书内容或路径
  • http_tls_client_key:客户端私钥内容或路径

示例语句:

CREATE CHANGEFEED FOR TABLE my_db.my_table
INTO 'https://webhook.example.com/ingest'
WITH (
  http_tls_enabled = true,
  http_tls_ca_cert = '/certs/rootCA.crt',
  http_tls_client_cert = '/certs/changefeed-client.crt',
  http_tls_client_key = '/certs/changefeed-client.key',
  format = 'json'
);

关键注意事项

  • 所有服务端、客户端证书必须由同一指定根CA签发,确保信任链完整。
  • 证书文件需放置在每个CockroachDB节点可访问的路径,或通过云环境的安全挂载方式提供。
  • 若证书内容直接传入参数(而非文件路径),需将证书内容转义为单行字符串(避免换行符干扰)。

内容的提问来源于stack exchange,提问作者histocrat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 06:25:32