Я пытаюсь настроить 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 подсказать, что я настроил неправильно?