kafka配置单向ssl加密,以及加密后python客户端访问方式(kafka v1.1.0)

一、kafka broker配置以及sh客户端的使用

最近在使用kafka集群的过程中,为了保证安全性,配置了ssl加密,首先按照官网的配置进行如下的设置
#!/bin/bash
#Step 1
keytool -keystore server.keystore.jks -alias localhost -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 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
这个流程下来,会生成以下文件:
  • server.keystore.jks 存储证书的密钥库文件
  • ca-key CA密钥,需要妥善保存
  • ca-cert CA证书(包含公钥)
  • cert-file 当前未签名的证书
  • cert-signed 当前已签名的证书
  • client.truststore.jks 客户端信任存储区
  • server.truststore.jks 服务端信任存储区
需要将server.keystore.jks server.truststore.jks 给每一个broker复制一份
kafka server.conf配置
listeners=SSL://XXXXXX:9092
ssl.keystore.location=/home/admin/ssl/server.keystore.jks
ssl.keystore.password=XXXXX
ssl.key.password=XXXXX
ssl.truststore.location=/home/admin/ssl/server.truststore.jks
ssl.truststore.password=XXXXXX
ssl.enabled.protocols=TLSv1.2,TLSv1.1,TLSv1
ssl.keystore.type=JKS
ssl.truststore.type=JKS
ssl.secure.random.implementation=SHA1PRNG
security.inter.broker.protocol=SSL
kafka consumer配置
security.protocol=SSL
ssl.truststore.location=/home/admin/ssl/client.truststore.jks
ssl.truststore.password=XXXXXX
kafka producer配置
security.protocol=SSL
ssl.truststore.location=/home/admin/ssl/client.truststore.jks
ssl.truststore.password=XXXXXX

二、python客户端配置

首先需要生产python客户端可用的证书格式:
keytool -list -rfc -keystore server.keystore.jks
keytool -exportcert -alias localhost -keystore server.keystore.jks -rfc -file certificate.pem 
keytool -exportcert -alias CARoot -keystore server.keystore.jks -rfc -file CARoot.pem
本例使用的是python的客户端:kafka-python==1.4.2, kakfa由于版本是v1.1.0,所以参数设置的时候需要加入 api_version = (1, 1)
ssl_certfile = "certificate.pem"
ssl_cafile = "CARoot.pem"
producer = KafkaProducer(bootstrap_servers=address, value_serializer=lambda v: json.dumps(v).encode('utf-8'), retries=retries, api_version = (1, 1), request_timeout_ms=1000, ssl_check_hostname=False, ssl_certfile=ssl_certfile, security_protocol="SSL", ssl_cafile=ssl_cafile)
成功

转载于:https://www.cnblogs.com/Adonis-SUN/p/9267620.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值