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 TLSkafka_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 TLShttp_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
相关产品推荐
相关产品推荐

