一些背景知识。我正尝试使用 .NET 驱动程序连接到 Confluents Kafka Clound,内部使用本机 RdKafka 机制。
从我的机器上,连接失败,并显示
rdkafka#producer-1| [thrd:sasl_ssl://url_to_cluster: sasl_ssl://url_to_bootstrap:SSL 握手失败:s3_clnt.c:1269:错误:14090086:SSL 例程:ssl3_get_server_certificate:证书验证失败:(CONNECT 状态下 75 毫秒后)
客户端有一个EnableSslCertificateVerification
属性,如果我设置它,false
一切都会正常工作。
但请忽略此处与 .NET 和 Kafka 相关的信息,仅介绍背景。这里涉及我的机器上的哪些内容?我是否在本地缺少某种形式的证书?
我确实安装了 openssl,据我所知,它默认信任一堆根证书。
它对所有同事都适用,即使是使用最新操作系统更新的 Mac 用户也是如此。如果我从 Docker 内部运行它,它在我的计算机上也能正常工作。
我可以检查什么来解决这个问题?
答案1
librdkafka 不使用 OSX Keychain/store,而是依赖于磁盘上的 CA 证书文件。openssl brew 包从存储中提取 CA 证书并在安装时将其写入磁盘,因此可以通过 homebrew 安装 openssl 或 grabcacert.pem来自 Mozilla/curl,然后指定SslCaLocation
您将其存储到哪里。
答案2
您需要安装用于签署服务器 TLS 证书的 CA 证书。您没有提供该信息,但您可以轻松检查服务器的配置,例如:
openssl s_client -connect <server>:<port> -showcerts