kafka实战SSL

半兽人 发表于: 2019-10-22   最后更新时间: 2019-10-23 16:51:17  
{{totalSubscript}} 订阅, 12,542 游览

生成ca和信任库

#!/bin/bash
#Step 1
keytool -keystore server.keystore.jks -alias localhost -validity 365 -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 localhost -certreq -file cert-file
openssl x509 -req -CA ca-cert -CAkey ca-key -in cert-file -out cert-signed -days 365 -CAcreateserial -passin pass:test1234
keytool -keystore server.keystore.jks -alias CARoot -import -file ca-cert
keytool -keystore server.keystore.jks -alias localhost -import -file cert-signed

more /etc/kafka/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";
};

more config/server.properties

listeners=SSL://localhost:9093
ssl.keystore.location=/var/private/ssl/server.keystore.jks
ssl.keystore.password=test1234
ssl.key.password=test1234
ssl.truststore.location=/var/private/ssl/server.truststore.jks
ssl.truststore.password=test1234
security.inter.broker.protocol=SSL

启动kafka

export KAFKA_OPTS='-Djava.security.auth.login.config=/etc/kafka/kafka_server_jaas.conf'
bin/kafka-server-start.sh config/server.properties

more client-ssl.properties

security.protocol=SSL
ssl.truststore.location=/var/private/ssl/client.truststore.jks
ssl.truststore.password=test1234

消费者和生产者

bin/kafka-console-producer.sh --broker-list localhost:9093 --topic test --producer.config client-ssl.properties 

bin/kafka-console-consumer.sh --bootstrap-server localhost:9093 --topic test --consumer.config client-ssl.properties

本例说明文档来自

kafka使用SSL加密和认证

更新于 2019-10-23
在线,39分钟前登录

没干嘛 1年前

大神你好,请问SASL_SSL和SSL有什么区别么

半兽人 -> 没干嘛 1年前

两者的区别,SSL一个是数据传输加密,SASL一个是进行身份验证的。

  • SSL(Secure Socket Layer)安全套接层,简单说就是将传输的数据进行加密。
  • SASL(简单验证和安全层,Simple Authentication and Security Layer),验证客户端(生产者或消费者)、其他broker或工具的连接。

更多可参考:kafka安全概述

tiiimo 2年前

你好,我想问一下,这个可以做多个不同的密码吗?
比如,A系统的密码是passwordA
B系统的密码是passwordB

半兽人 -> tiiimo 2年前

可以,关注:

user_alice="alice-secret";

的实现方式,多复制几个。

luyun 4年前

你好,请问下我在docker里面部署,listener是虚拟机的IP地址,生成ca那个shell里面的localhost是不是也要改成对应的IP地址?

sandy -> luyun 4年前

用域名

查看kafka更多相关的文章或提一个关于kafka的问题,也可以与我们一起分享文章