在单个节点上使用SSL与Kafka

时间:2017-12-07 17:25:33

标签: security ssl apache-kafka

我希望让SSL与Kafka一起运行,以使其更安全。我下载了Kafka并安装了它。我按照关于为SSL创建证书和信任库的说明没有问题。 我将以下内容添加到config / server.properties

ssl.enabled.protocols=TLSv1.2,TLSv1.1,TLSv1
ssl.keystore.type=JKS
ssl.truststore.type=JKS

listeners=PLAINTEXT://localhost:9092,SSL://localhost:9093
ssl.endpoint.identification.algorithm=HTTPS
security.inter.broker.protocol=SSL
ssl.secure.random.implementation=SHA1PRNG
ssl.endpoint.identification.algorithm=HTTPS
ssl.keystore.location=/home/ec2-user/workspace/kafka/cert/server.keystore.jks
ssl.key.password=<the password>
ssl.keystore.password=<the password>
ssl.truststore.location=/home/ec2-user/workspace/kafk/cert/server.truststore.jks
ssl.truststore.password=<the password>

启动Zookeeper后,当我启动kafak时出现此错误:[2017-12-07 16:02:52,155]错误[Controller id = 0,targetBrokerId = 0]由于以下原因,与节点0的连接验证失败:握手失败(org.apache.kafka.clients.NetworkClient)。 我必须终止任务才能阻止此消息

查看logs/controller.log

[Controller-0-to-broker-0-send-thread]: Controller 0's connection to broker localhost:9093 (id: 0 rack: null) was unsuccessful (kafka.controller.RequestSendThread)

您是否必须在端口9093上打开防火墙?

谢谢

1 个答案:

答案 0 :(得分:0)

握手失败通常意味着他们能够彼此交谈但无法达成共识。

您应该尝试在配置中不要使用ssl.endpoint.identification.algorithm=HTTPS行。通常,证书检查中的主机名不匹配是导致这种情况的原因。