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";
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?