我想知道我是否遗漏了有关为 Kraft 配置 SSL 的信息。
我们目前有一个 Zookeeper 集群,其中所有代理间和客户端通信都使用 SSL。我们管理自己的 CA 并为我们的经纪商和客户生成所有必要的密钥库/信任库 jks 文件。我们已经这样做好几年了。
我最近一直在尝试建立一个基于 Kraft 的集群。由于 Kraft 控制器的配置与 Kafka 代理非常相似,我想我会尝试让 Kraft 控制器通过 SSL 相互通信,就像代理一样。
当我为 Kraft 控制器启用 SSL 时,我在启动时收到此错误:
Invalid value javax.net.ssl.SSLHandshakeException: No available authentication scheme for configuration A client SSLEngine created with the provided settings can't connect to a server SSLEngine created with those settings.
我使用 Confluence 的镜像在 Docker 容器中运行所有内容。目前使用版本 7.7.0,尽管我在 7.7.1 上看到了相同的错误
打开 SSL 调试没有发现任何明显的结果。我对发生的事情感到非常困惑。想知道这里是否有人有想法。对此进行了多次尝试,并进行了大量研究,但没有取得任何进展。
我的相关 Kraft 控制器配置
KAFKA_CONTROLLER_LISTENER_NAMES: SSL
KAFKA_INTER_BROKER_LISTENER_NAME: SSL
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "SSL:SSL"
KAFKA_LISTENERS: SSL://0.0.0.0:9094
KAFKA_METADATA_VERSION: "3.7"
KAFKA_PROCESS_ROLES: controller
KAFKA_SSL_CLIENT_AUTH: required
KAFKA_SSL_KEYSTORE_CREDENTIALS: credentials
KAFKA_SSL_KEYSTORE_FILENAME: keystore.jks
KAFKA_SSL_KEY_CREDENTIALS: credentials
KAFKA_SSL_SECRETS_DIR: /etc/kafka/secrets
KAFKA_SSL_TRUSTSTORE_CREDENTIALS: credentials
KAFKA_SSL_TRUSTSTORE_FILENAME: truststore.jks
我相信这个问题和我的评论抓住了问题和解决方案
https://github.com/confluenceinc/kafka-images/issues/350
您可以通过手动设置 Confluence 的
configure
脚本为您设置的 SSL 环境变量来解决此问题。
# created by config file, but setting manually here
KAFKA_SSL_KEY_CREDENTIALS_LOCATION: "/kafka/etc/secrets/credentials"
KAFKA_SSL_KEY_PASSWORD: "hunter1"
KAFKA_SSL_KEYSTORE_LOCATION: "/kafka/etc/secrets/keystore.jks"
KAFKA_SSL_KEYSTORE_CREDENTIALS_LOCATION: "/kafka/etc/secrets/credentials"
KAFKA_SSL_KEYSTORE_PASSWORD: "hunter1"
KAFKA_SSL_TRUSTSTORE_LOCATION: "/kafka/etc/secrets/truststore.jks"
KAFKA_SSL_TRUSTSTORE_CREDENTIALS_LOCATION: "/kafka/etc/secrets/credentials"
KAFKA_SSL_TRUSTSTORE_PASSWORD: "hunter1"