参考:kafka SSL 证书生成及配置-shenyue_sam-ChinaUnix博客

kafka学习笔记十kafka-SSL安全认证机制_风情客家__的博客-CSDN博客_kafka ssl 

kafka使用SSL加密和认证--todo_风情客家__的博客-CSDN博客_kafka开启ssl 

apache kafka可以使用SSL加密连接,还可以限制客户端访问,给客户端发行证书,只允许持有证书的客户端访问。

下面使用jdk的keytool工具来生成证书,配置kafka。

为了便于演示,ca和服务器证书使用相同的密码,如下:

KSPASS=xxxx

客户端证书密码如下:

CLIENT_PASS=yyyy

一、生成自签名ca证书

keytool -genkeypair \
-keystore mycastore.jks \
-storepass ${KSPASS} \
-alias myca \
-validity 365 \
-dname CN=ca,C=cn \
-ext bc:c
#(注意有效天数。默认是90天。)

1.2 导出证书

keytool -exportcert \
-keystore mycastore.jks \
-storepass ${KSPASS} \
-alias myca \
-rfc \
-file myca.cer

1.3 查看证书

keytool -list \
-keystore mycastore.jks \
-storepass ${KSPASS}

# 打印
keytool -printcert \
-file myca.cer

二、服务器证书

2.1 生成证书

keytool -genkeypair \
-keystore server.keystore.jks \
-storepass ${KSPASS} \
-alias server \
-keypass ${KSPASS} \
-validity 365 \
-dname CN=127.0.0.1,C=cn

2.2 生成证书请求

keytool -certreq \
-keystore server.keystore.jks \
-storepass ${KSPASS} \
-alias server \
-keypass ${KSPASS} \
-file server.csr

2.3 ca签名

keytool -gencert \
-keystore mycastore.jks \
-storepass ${KSPASS} \
-alias myca \
-keypass ${KSPASS} \
-validity 365 \
-infile server.csr \
-outfile server.cer

2.4 查看证书

keytool -printcert -file server.cer

2.5 导入ca证书,生成truststore

keytool -importcert \
-keystore server.truststore.jks \
-storepass ${KSPASS} \
-alias myca \
-keypass ${KSPASS} \
-file myca.cer

2.6 导入ca证书到keystore

keytool -importcert \
-keystore server.keystore.jks \
-storepass ${KSPASS} \
-alias myca \
-keypass ${KSPASS} \
-file myca.cer

2.7 导入server证书到keystore

keytool -importcert \
-keystore server.keystore.jks \
-storepass ${KSPASS} \
-alias server \
-keypass ${KSPASS} \
-file server.cer

三、客户端证书

3.1 生成证书

keytool -genkeypair \
-keystore client1.keystore.jks \
-storepass ${CLIENT_PASS} \
-alias client1 \
-keypass ${CLIENT_PASS} \
-validity 365 \
-dname CN=client1,C=cn

3.2 生成证书请求

keytool -certreq \
-keystore client1.keystore.jks \
-storepass ${CLIENT_PASS} \
-alias client1 \
-keypass ${CLIENT_PASS} \
-file client1.csr

3.3 ca签名

keytool -gencert \
-keystore mycastore.jks \
-storepass ${KSPASS} \
-alias myca \
-keypass ${KSPASS} \
-validity 365 \
-infile client1.csr \
-outfile client1.cer

3.4 查看证书

keytool -printcert -file client1.cer

3.5 导入ca证书,生成truststore

keytool -importcert \
-keystore client1.truststore.jks \
-storepass ${CLIENT_PASS} \
-alias myca \
-keypass ${CLIENT_PASS} \
-file myca.cer

3.6 导入ca证书到keystore

keytool -importcert \
-keystore client1.keystore.jks \
-storepass ${CLIENT_PASS} \
-alias myca \
-keypass ${CLIENT_PASS} \
-file myca.cer

3.7 导入server证书到keystore

keytool -importcert \
-keystore client1.keystore.jks \
-storepass ${CLIENT_PASS} \
-alias client1 \
-keypass ${CLIENT_PASS} \
-file client1.cer

3.8 broker配置(内网使用9092端口明文,外网使用9093端口SSL)

ssl.keystore.location=server.keystore.jks
ssl.keystore.password=xxx
ssl.key.password=xxx
ssl.truststore.location=server.truststore.jks
ssl.truststore.password=xxx
ssl.client.auth=required
listeners=PLAINTEXT://0.0.0.0:9092,SSL://:9093
advertised.listeners=PLAINTEXT://10.1.1.1:9092,SSL://x.x.x.x:9093

3.9 producer配置

bootstrap.servers=x.x.x.x:9093
ssl.protocol=SSL
security.protocol=SSL
ssl.keystore.location=client1.keystore.jks
ssl.keystore.password=xxx
ssl.key.password=xxx
ssl.truststore.location=client1.truststore.jks
ssl.truststore.password=xxx

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐