我正在尝试为 kafka 代理设置 TLS。我已经按照这里的步骤操作,并且能够使用 TLS 设置 Kafka。(在日志中,我看到已配置端口的 SSL 条目(。
现在我面临着连接生产者/消费者的问题。
-
我使用以下命令创建了一个客户机密钥库,
keytool -keystore client.keystore.jks -alias localhost -validity 365 -keyalg RSA -genkey
-
将 CA 证书添加到密钥库,
keytool -keystore client.keystore.jks -alias CARoot -import -file ca-cert
-
在客户端中运行以下命令,其中
ca-cert
是服务器上使用的证书。keytool -keystore client.truststore.jks -alias CARoot -import -file ca-cert keytool -keystore client.keystore.jks -alias localhost -validity 365 -keyalg RSA -genkey keytool -keystore client.keystore.jks -alias CARoot -import -file ca-cert
-
在
producer.properties
中添加了以下配置,security.protocol=SSL ssl.truststore.location=path to client.truststore.jks ssl.truststore.password=<password> ssl.keystore.location=path to client.keystore.jks ssl.keystore.password=<password> ssl.key.password=<password>
-
冉
kafka-console-producer
kafka-console-producer.sh --代理列表 0.0.0.0:9092 --主题测试 --生产者.config ../config/producer.properties
但是我在运行实用程序时收到以下错误,
警告 与节点 -1 的连接在身份验证期间终止。这可能会 指示由于凭据无效,身份验证失败。 (org.apache.kafka.clients.NetworkClient(
怀疑我在客户端配置中缺少某些内容。任何帮助将不胜感激。
您是否正在尝试使用客户端证书?相反,我建议,尝试没有客户端证书。在这种情况下,您只需要以下条目,
producer.properties
文件:-
security.protocol=SSL
ssl.truststore.location=/<path-to>/truststore.jks
ssl.truststore.type=JKS
在此处阅读更多相关信息 - http://kafka.apache.org/documentation/#security_configclients
对于客户端身份验证,kafka 使用 SASL,文档的这一部分清楚地涵盖了它 - http://kafka.apache.org/documentation/#security_sasl