kafka单机 SASL_SSL 配置
关于kafka的SASL_SSL等分类和原理参考 https://www.cnblogs.com/szcj/articles/17222568.html
1、下载zookeeper和kafka
https://archive.apache.org/dist/kafka/2.7.2/kafka_2.12-2.7.2.tgz
https://dlcdn.apache.org/zookeeper/zookeeper-3.5.10/apache-zookeeper-3.5.10-bin.tar.gz
全都放到 /data/kafka_and_zookeeper2/ 目录下
2、分别解压
tar -zxvf apache-zookeeper-3.5.10-bin.tar.gz
tar -zxvf kafka_2.12-2.7.2.tgz
3、环境检查
java环境 JAVA_HOME、CLASSPATH、PATH(包含JAVA_HOME/bin)
4、配置Kafka
1)配置SSL
cd kafka_2.12-2.7.2
编辑ssl.sh 如下,注意ip是要替换为真实的
#!/bin/bash #Step 1 keytool -keystore server.keystore.jks -alias ip -validity 365 -keyalg RSA -genkey #Step 2 openssl req -new -x509 -keyout ca-key -out ca-cert -days 365 keytool -keystore server.truststore.jks -alias CARoot -import -file ca-cert keytool -keystore client.truststore.jks -alias CARoot -import -file ca-cert #Step 3 keytool -keystore server.keystore.jks -alias ip -certreq -file cert-file openssl x509 -req -CA ca-cert -CAkey ca-key -in cert-file -out cert-signed -days 365 -CAcreateserial -passin pass:123456 keytool -keystore server.keystore.jks -alias CARoot -import -file ca-cert keytool -keystore server.keystore.jks -alias ip -import -file cert-signed
执行过程中
遇到密码,就输入123456
遇到 [no]: 就输入yes
遇到 city、name、country等,就直接回车
2)编辑sasl文件
vi kafka_server_jaas.conf
KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret" user_admin="admin-secret" user_alice="alice-secret"; };
3)增加kafka的jvm启动参数
vi bin/kafka-run-class.sh
找到这块代码
找到这块代码 # Generic jvm settings you want to add if [ -z "$KAFKA_OPTS" ]; then KAFKA_OPTS="" fi 在fi下面,空一行,然后另起一行,增加下面这行 KAFKA_OPTS=${KAFKA_OPTS}" -Djava.security.auth.login.config=/data/kafka_and_zookeeper2/kafka_2.12-2.7.2/kafka_server_jaas.conf "
4)修改kafka配置文件
vi config/server.properties
增加下面内容
listeners=SASL_SSL://0.0.0.0:9093 advertised.listeners=SASL_SSL://ip:9093 security.inter.broker.protocol=SASL_SSL sasl.mechanism.inter.broker.protocol=PLAIN sasl.enabled.mechanisms=PLAIN ssl.keystore.location=/data/kafka_and_zookeeper2/kafka_2.12-2.7.2/server.keystore.jks ssl.keystore.password=123456 ssl.key.password=123456 ssl.truststore.location=/data/kafka_and_zookeeper2/kafka_2.12-2.7.2/server.truststore.jks ssl.truststore.password=123456 ssl.endpoint.identification.algorithm=
5)启动kafka(暂不启动)
bin/kafka-server-start.sh [-daemon] config/server.properties
增加-daemon表示后台启动
5、配置zookeeper
1)修改zookeeper配置文件
cd apache-zookeeper-3.5.10-bin/ cp conf/zoo_sample.cfg conf/zoo.cfg
2)注意这一步是很多博客都说要配置的,其实不用配置。(配了也可以,不会报错)
配置zookeeper连接kafka broker的sasl配置 增加kafka_client_jaas.conf文件,内容如下 KafkaClient { org.apache.kafka.common.security.plain.PlainLoginModule required username="alice" password="alice-secret"; }; 修改zoo.cfg文件,末尾增加 #sasl认证 authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider requireClientAuthScheme=sasl jaasLoginRenew=3600000 修改bin/zkServer.sh文件 找到这2行 ZOO_LOG_FILE=zookeeper-$USER-server-$HOSTNAME.log _ZOO_DAEMON_OUT="$ZOO_LOG_DIR/zookeeper-$USER-server-$HOSTNAME.out" 在下面添加 JVMFLAGS=${JVMFLAGS}" -Djava.security.auth.login.config=/data/kafka_and_zookeeper2/apache-zookeeper-3.5.10-bin/kafka_client_jaas.conf "
3)启动zookeeper
bin/zkServer.sh start
4)启动kafka
6、客户端连接方式
以offset explore为例




org.apache.kafka.common.security.plain.PlainLoginModule required username="alice" password="alice-secret";
如果是 securityProtocol=SASL PLAINTEXT 且 saslMechanism=SCRAM-SHA-256 方式,那么改为如下配置
org.apache.kafka.common.security.scram.ScramLoginModule required username="alice" password="alice-secret";

浙公网安备 33010602011771号