Не удалось подключиться к Zookeeper после попытки настройки SSL-аутентификации с помощью брокера Kafka - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь настроить SSL-аутентификацию по всем направлениям с моей настройкой Kafka / Zookeeper. то есть брокеры должны общаться с Zookeeper с использованием аутентификации SSL, а клиенты должны общаться с брокерами с использованием аутентификации SSL. Я довольно новичок в этом, поэтому сделал лучший удар, но я получаю сообщение

[2019-03-11 16: 17: 00,559] Ошибка аутентификации SASL при входе в систему контекст «Клиент» с исключением: {} (org.apache.zookeeper.client.ZooKeeperSaslC lient) javax.security.sasl.SaslException: ошибка при аутентификации с Член Кворума Zookeeper: saslToken члена кворума является нулевым. в org.apache.zookeeper.client.ZooKeeperSaslClient.createSaslToken (ZooKeeperSaslClient.java:279) в org.apache.zookeeper.client.ZooKeeperSaslClient.respondToServer (ZooKeeperSaslClient.java:242) в org.apache.zookeeper.ClientCnxn $ SendThread.readResponse (ClientCnxn.java:805) в org.apache.zookeeper.ClientCnxnSocketNIO.doIO (ClientCnxnSocketNIO.java:94) в org.apache.zookeeper.ClientCnxnSocketNIO.doTransport (ClientCnxnSocketNIO.java:366)

ОБНОВЛЕНИЕ: мне интересно, использую ли я правильный метод для использования файла JAAS, который я создал - поскольку я работаю через окна, он отличается от того, как в большинстве учебных пособий говорится о включении переменной env JVM. Я обновляю файл kafka-server-start.bat следующим образом

IF [%1] EQU [] (
    echo USAGE: %0 server.properties
    EXIT /B 1
)

rem --- THIS IS MY ADDED LINE ---
set KAFKA_OPTS=-Djava.security.auth.login.config=c:/kafka/kafka_2.12-2.1.1/config/kafka_server_jaas.conf

SetLocal
IF ["%KAFKA_LOG4J_OPTS%"] EQU [""] (
    set KAFKA_LOG4J_OPTS=-Dlog4j.configuration=file:%~dp0../../config/log4j.properties
)
IF ["%KAFKA_HEAP_OPTS%"] EQU [""] (
    rem detect OS architecture
    wmic os get osarchitecture | find /i "32-bit" >nul 2>&1
    IF NOT ERRORLEVEL 1 (
        rem 32-bit OS
        set KAFKA_HEAP_OPTS=-Xmx512M -Xms512M
    ) ELSE (
        rem 64-bit OS
        set KAFKA_HEAP_OPTS=-Xmx1G -Xms1G
    )
)
"%~dp0kafka-run-class.bat" kafka.Kafka %*
EndLocal

Это правильный способ подключения файла JAAS из Windows?

Мои различные файлы

zoo.cfg

tickTime=2000
initLimit=10
syncLimit=5
dataDir=c:/kafka/zookeeper-3.4.13/data
clientPort=2181
authProvider.1=org.apache.zookeeper.server.auth.DigestAuthenticationProvider
jaasLoginRenew=3600000        
requireClientAuthScheme=sasl

zookeeper_jaas.conf

Server {        
    org.apache.kafka.common.security.plain.PlainLoginModule required        
    username="admin"        
    password="admin-secret"        
    user_admin="admin-secret";        
};

server.properties в брокере

listeners=SSL://:9093,SASL_SSL://:9094
security.inter.broker.protocol=SSL
ssl.client.auth=required

ssl.truststore.location=c:/kafka/kafka_2.12-2.1.1/kafka.server.truststore.jks
ssl.truststore.password=Kafkaflow1
ssl.keystore.location=c:/kafka/kafka_2.12-2.1.1/kafka.server.keystore.jks
ssl.keystore.password=Kafkaflow1
ssl.key.password=Kafkaflow1
sasl.enabled.mechanisms=PLAIN
zookeeper.set.acl=true  

authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
super.users=User:kafkabroker

kafka_server_jaas.conf

KafkaServer {
   org.apache.kafka.common.security.plain.PlainLoginModule required
   username="kafkabroker"
   password="kafkabroker-secret"
   user_kafkabroker="kafkabroker-secret"
   user_client1="client1-secret";
};

Client {
   org.apache.zookeeper.server.auth.DigestLoginModule required
   username="kafka"
   password="kafka-secret";
};

Может кто-нибудь с опытом аутентификации kafka / Zookeeper подсказать, что я настроил неправильно?

...