当前位置: 首页 > 知识库问答 >
问题:

带有SASL-SCRAM的Kafka2.2.0-SSL对等体未通过身份验证,而是返回匿名

龚迪
2023-03-14

Kafka SSL对等方未经身份验证,在客户端连接代理SASL端口时返回匿名错误,它允许在明文或SSL端口上连接。

我在启用SSL的windows系统中使用了kafka 2.2.0,kafka代理明文在9092上运行,SSL在9093上运行。最重要的是,将SASL配置为紧急停堆机制,侦听器端口为9094,当producer作为kafka控制台producer运行时,出现问题摘要中提到的错误。bat——代理列表本地主机:9094——主题xxx

以下是SASL配置,未提供基本和SSL等其他配置

动物园管理员。属性

authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000

服务器属性

listeners=PLAINTEXT://0.0.0.0:9092,SSL://0.0.0.0:9093,SASL_SSL://0.0.0.0:9094
advertised.listeners=PLAINTEXT://localhost:9092,SSL://localhost:9093,SASL_SSL://localhost:9094
sasl.enabled.mechanisms=SCRAM-SHA-256
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256

动物园管理员_server _jaas。形态

Server {
   org.apache.kafka.common.security.scram.ScramLoginModule required
   username="admin"
   password="admin-pwd"
   user_admin="admin-pwd"
   user_other1="other1-pwd"
   user_other2="other2-pwd";
};

producer.properties

security.protocol=SSL

Kafka。形态

KafkaServer {
   org.apache.kafka.common.security.scram.ScramLoginModule required
   username="admin"
   password="admin-pwd";
};
Client {
   org.apache.kafka.common.security.plain.PlainLoginModule required
   username="admin"
   password="admin-pwd";
};

Kafka。形态

KafkaClient {
    org.apache.kafka.common.security.scram.ScramLoginModule required
    username="admin"
    password="admin-pwd";
};

启动动物园管理员

SET ZOO_LOG_DIR=C:/Work/kafka_2.11-2.2.0-for-ssl/zookeeper-data
SET KAFKA_HOME=C:/Work/kafka_2.11-2.2.0-for-ssl
set KAFKA_OPTS=-Djava.security.auth.login.config=%KAFKA_HOME%/config/zookeeper_server_jaas.conf
zookeeper-server-start.bat %KAFKA_HOME%/config/zookeeper.properties

开始Kafka作为

set KAFKA_HOME=C:/Work/kafka_2.11-2.2.0-for-ssl
set KAFKA_OPTS=-Djava.security.auth.login.config=%KAFKA_HOME%/config/kafka_server_jaas.conf
kafka-server-start.bat %KAFKA_HOME%/config/server.properties

开始制作

SET KAFKA_HOME=C:/Work/kafka_2.11-2.2.0-for-ssl
set KAFKA_OPTS=-Djava.security.auth.login.config=%KAFKA_HOME%/config/kafka_client_jaas.conf
kafka-console-producer.bat --broker-list localhost:9094 --topic xxx

只有当我使用代理端口as 9092时,生产者才能工作。我做了一些配置错误的事情。有什么意见吗?

更新:

这是连接生产者/消费者时的错误

[2019-10-14 15:39:42108]调试[SSLTTransportLayer channelId=127.0.0.1:9094-127.0.0.1:63848-0 key=sun.nio.ch。SelectionKeyImpl@222a223c]SSL对等方未经过身份验证,而是返回匿名(org.apache.kafka.common.network.sslttransportlayer)[2019-10-14 15:39:42108]调试[sslttransportlayer channelId=127.0.0.1:9094-127.0.0.1:63848-0 key=sun.nio.ch。SelectionKeyImpl@222a223c]使用peerHost'127.0.0.1'peerPort 63848 peerPrincipal'用户:匿名'cipherSuite'TLS_DHE_DSS_与_AES_256_CBC_SHA256'(org.apache.kafka.common.network.ssltTransportLayer)[2019 10-14 15:39:42108]调试将SASL服务器状态设置为身份验证期间的握手请求或_版本请求(org.apache.kafka.common.security.authenticator.salserverAuthenticator)[2019-10-14 15:39:42108]在身份验证期间调试处理Kafka请求API_版本(org.apache.Kafka.common.security.authenticator.SaslServerAuthenticator)[2019-10-14 15:39:42108]在身份验证期间调试将SASL服务器状态设置为握手_请求(org.apache.Kafka.common.security.authenticator.SaslServerAuthenticator)[]2019-10-14 15:39:42108]将SASL服务器状态设置为调试失败身份验证期间(org.apache.kafka.common.security.authenticator.SaslServerAuthenticator)[2019-10-14 15:39:42108]信息[SocketServer brokerId=0]身份验证失败,使用127.0.0.1/127.0.0.1(在SASL握手期间,Kafka意外请求类型元数据。)(org.apache.kafka.common.network.Selector)

共有1个答案

劳和雅
2023-03-14

我有同样的问题。在2.2. x和2.3. x Kafka版本上使用SASL SCRAM进行身份验证不起作用。在2.1上它是可以的。

最后,我通过在创建主体时提供zoomaster chroot路径(/kafkaTest)解决了这个问题:

./kafka-configs --zookeeper zookeeper-01:2181/kafkaTest --alter --add-config 'SCRAM-SHA-256=[password=admin-secret],SCRAM-SHA-512=[password=admin-secret]' --entity-type users --entity-name admin

看起来像是当凭据在zooegerroot路径中创建时,Kafka找不到要验证的凭据。

我希望它也能解决你的问题!

 类似资料:
  • 我试图添加安全性到我的kafka集群,我按照留档: < Li > https://Kafka . Apache . org/documentation/# security _ sasl _ scram < Li > https://docs . confluent . io/current/Kafka/authentic ation _ sasl/authentic ation _ sasl _

  • 再说一遍,SSLPeerunverificed的沉闷问题,但我没有使用自签名证书。我尝试使用HTTPS连接到主机。此主机具有正确的证书,Firefox和HttpsUrlConnection都没有任何问题。然而,在尝试使用HttpClient进行连接时,我遇到了可怕的异常。 有线索吗?还是小费在哪里看得更近? 谢了!

  • 我有一个应用程序jar,我正在使用DefaultHTTPClient类对象调用HTTPS url,但它给出的对等体不是authenticate异常,所以我想使用Keystore对jar进行签名。 根据@Duncan,我可以通过引用这个链接导入JVM中的。cer文件…我使用belloed命令将.cer导入到cacerts中 在此之后,我输入“Y”以信任证书 之后,我运行我的应用程序,但它仍然给我 堆

  • 我有一个服务,它公开了一个API我想测试。我在localhost上运行该服务,它有一个自签名证书。 我将。p12文件添加到test/resources和: 还增加了这个: restassured.config().sslconfig(sslconfig.sslconfig().AllowAllHostNames()); 但是,我得到以下错误: javax.net.ssl.sslpeerunveri

  • 一切都一直在工作,只是今天我开始得到一个错误消息,我甚至不能从Android工作室“同步项目与Gradle文件”。我唯一改变的是...办公室:D