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";

posted @   szcj~  阅读(1395)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示