我有一个3节点的Kafka集群。我已经启用了SASL_PLAINTEXT
,它与端口6667
一起工作正常。现在我想为同一集群中的不同端口启用SSL。我已经启用了信任库和密钥库证书。我从代理端完成了以下配置。
listeners : SSL://localhost:6668
security.inter.broker.protocol : SSL
ssl.key.password : xxxx
ssl.keystore.location : /root/kafka.server.keystore.jks
ssl.keystore.password : xxxxx
ssl.truststore.location : /root/kafka.server.truststore.jks
ssl.truststore.password : xxxxxx
ssl.keystore.type : JKS
ssl.truststore.type : JKS
我也同意了。我得到以下错误
Caused by: org.apache.kafka.common.KafkaException: org.apache.kafka.common.KafkaException: Failed to load SSL keystore /root/kafka.server.keystore.jks of type JKS
Caused by: org.apache.kafka.common.KafkaException: Failed to load SSL keystore /root/kafka.server.keystore.jks of type JKS
Caused by: java.io.FileNotFoundException: /root/kafka.server.keystore.jks (Permission denied)
由java.io.FileNotFoundException引起:/root/kafka.server.keystore.jks(权限被拒绝(
错误跟踪相当清晰。进程无法访问/root/kafka.server.keystore.jks
。请注意,该进程通常在不同的用户上运行,我怀疑密钥库是由不同的用户创建的。
确保运行进程的用户有足够的访问权限来读取/root/kafka.server.keystore.jks
。实现这一点的一种方法是更改文件的所有权:
sudo chown -R userWhoRunsTheProcess:userGroup /root/kafka.server.keystore.jks
关于这个问题,监听器获取一个地址列表,
listeners : SSL://0.0.0.0:6668,SASL_PLAINTEXT://0.0.0.0;6667
您已经有了sasl,所以我建议使用sasl_ssl