在Linux上配置Apache Kafka的安全认证,主要包括以下几个步骤:
首先,确保你已经在Linux系统上安装了Kafka。你可以从Kafka官方网站下载并解压。
为了启用SSL/TLS加密通信,你需要生成SSL证书和密钥,并在Kafka配置文件中进行相应的设置。
你可以使用OpenSSL来生成自签名证书和密钥:
# 生成密钥
openssl genrsa -alias kafka -keyout kafka.key 2048
# 生成证书签名请求(CSR)
openssl req -new -key kafka.key -out kafka.csr -subj "/CN=kafka"
# 生成自签名证书
openssl x509 -req -days 365 -in kafka.csr -signkey kafka.key -out kafka.crt
编辑server.properties文件,添加或修改以下配置:
# 启用SSL
listeners=SSL://:9093
ssl.keystore.location=/path/to/kafka.keystore.jks
ssl.keystore.password=your_keystore_password
ssl.key.password=your_key_password
ssl.truststore.location=/path/to/kafka.truststore.jks
ssl.truststore.password=your_truststore_password
# 启用SASL/PLAIN认证
security.inter.broker.protocol=SASL_SSL
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
将生成的证书和密钥导入到Java密钥库(JKS)中:
# 创建密钥库
keytool -importkeystore -srckeystore kafka.crt -srcstoretype PEM -destkeystore kafka.keystore.jks -deststoretype JKS
# 创建信任库
keytool -import -alias kafka -file kafka.crt -keystore kafka.truststore.jks
为了启用SASL/PLAIN认证,你需要创建JAAS配置文件,并在Kafka配置文件中进行相应的设置。
创建一个名为kafka_server_jaas.conf的文件,内容如下:
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret"
user_admin="admin-secret";
};
编辑server.properties文件,添加或修改以下配置:
# 启用SASL
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="admin" \
password="admin-secret" \
user_admin="admin-secret";
完成上述配置后,重启Kafka服务器以使更改生效:
# 停止Kafka服务器
bin/kafka-server-stop.sh
# 启动Kafka服务器
bin/kafka-server-start.sh config/server.properties
客户端也需要进行相应的配置以连接到启用了安全认证的Kafka集群。客户端需要配置SSL/TLS和SASL/PLAIN认证。
在客户端的client.properties文件中添加以下配置:
# 启用SSL
security.protocol=SASL_SSL
ssl.truststore.location=/path/to/client.truststore.jks
ssl.truststore.password=your_truststore_password
ssl.keystore.location=/path/to/client.keystore.jks
ssl.keystore.password=your_keystore_password
# 启用SASL/PLAIN认证
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="admin" \
password="admin-secret";
通过以上步骤,你可以在Linux上配置Apache Kafka的安全认证,包括SSL/TLS加密通信和SASL/PLAIN认证。