通过TLS将Kafka生产者/消费者连接到经纪人

时间:2017-07-13 19:40:38

标签: ssl apache-kafka kafka-producer-api

我正在尝试为kafka经纪人设置TLS。我已按照here步骤操作并能够使用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

  5. 中添加了以下配置
    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>
    
    1. 运行console producer实用程序

      ./ kafka-console-producer.sh --broker-list 0.0.0.0:9092 --topic test --producer.config ../ config / producer.properties

    2. 但是我在运行util时遇到以下错误,

        

      WARN在身份验证期间终止与节点-1的连接。这可能   表示由于凭据无效而导致身份验证失败。   (org.apache.kafka.clients.NetworkClient)

      怀疑我在客户端配置中遗漏了一些东西。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您要使用客户端证书吗?相反,我会建议您尝试不使用客户端证书。在这种情况下,您仅需要以下条目,

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