通过 TLS 将 Kafka 生产者/消费者连接到代理



我正在尝试为 kafka 代理设置 TLS。我已经按照这里的步骤操作,并且能够使用 TLS 设置 Kafka。(在日志中,我看到已配置端口的 SSL 条目(。

现在我面临着连接生产者/消费者的问题。

  1. 我使用以下命令创建了一个客户机密钥库,

    keytool -keystore client.keystore.jks -alias localhost -validity 365 -keyalg RSA -genkey
    
  2. 将 CA 证书添加到密钥库,

    keytool -keystore client.keystore.jks -alias CARoot -import -file ca-cert
    
  3. 在客户端中运行以下命令,其中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
    
  4. 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>
    
  5. 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