Strimzi Kafka Connect配置Debezium MongoDB源连接器遇TLS证书错误
解决Strimzi Kafka Connect + Debezium MongoDB TLS握手失败问题
可能的原因及修复步骤
1. 确认证书文件格式与内容正确性
- 检查挂载的
.pem文件是否包含完整CA证书链,若存在中间CA,需确保根CA到中间CA的所有证书都在文件内,不能仅保留叶子证书。 - 执行命令验证证书内容:
确认输出的kubectl exec kc-pod -- cat /opt/kafka/external-configuration/connector-config/your-ca-file.pem | openssl x509 -text -nooutIssuer和Subject信息与Mongo集群的CA配置匹配。
2. 修正MongoDB连接字符串参数
- 需显式指定
tls=true参数,不能仅依赖tlsCAFile,完整连接字符串示例:mongodb://user:password@mongo-host:27017/dbname?tls=true&tlsCAFile=/opt/kafka/external-configuration/connector-config/your-ca-file.pem - 严格核对路径与Pod中证书的实际路径,注意大小写和文件名拼写。
3. 验证Kafka Connect的Secret挂载配置
- 检查Kafka Connect的YAML配置,确认Secret挂载到
connector-config目录且为只读模式:externalConfiguration: volumes: - name: connector-config secret: secretName: your-mongo-ca-secret defaultMode: 420 - 确保Secret中的密钥名称与Pod内文件名完全一致,比如Secret里的
ca.pem对应Pod内/opt/kafka/external-configuration/connector-config/ca.pem。
4. 手动导入证书到JVM信任库(备选方案)
若上述步骤无效,可手动将CA证书导入Kafka Connect使用的JVM信任库:
- 进入Kafka Connect Pod:
kubectl exec -it kc-pod -- /bin/bash - 导入证书到默认信任库(需root权限):
keytool -importcert -file /opt/kafka/external-configuration/connector-config/your-ca-file.pem -alias mongo-ca -keystore /usr/lib/jvm/zulu11-ca/lib/security/cacerts -storepass changeit -noprompt - 重启Kafka Connect Pod使信任库变更生效。
5. 检查MongoDB集群的双向TLS配置
- 若Mongo集群启用双向TLS,需在连接字符串中添加
tlsCertificateKeyFile参数指定客户端证书和密钥路径,同时确保对应证书文件已挂载到Pod中。
内容的提问来源于stack exchange,提问作者Zombiee
相关产品推荐
相关产品推荐

