文章目录
1. 使用keytool来为集群的每台机器生成密钥和证书。
1. 先执行下面的脚本
会要输入很多次密码建议密码都一样
#!/bin/bash
#Step 1
#以下注意修改时间 默认时间365
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
#得修改时间和密码 -passin pass:你的密码
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 localhost -import -file cert-signed
#Step 4
keytool -keystore client.keystore.jks -alias localhost -validity 365 -keyalg RSA -genkey
2. 参数解释
- keystore: 密钥仓库的位置
- ca-cert: CA的证书
- ca-key: CA的私钥
- ca-password: CA的密码
- cert-file: 出口,服务器的未签名证书
- cert-signed: 已签名的服务器证书
2. 配置kafka
注意: 内网传输未配置ssl 加密, 使用ssl 加密会影响性能
- 在server.properties 中增加以下配置
#改为自己的主机名或ip
listeners=PLAINTEXT://host.name:9092,SSL://host.name:9093
#记得修改路径为你秘钥的路径
ssl.keystore.location=/export/servers/kafka_2.11-2.4.1/bin/cart/server.keystore.jks
ssl.keystore.password=123456
ssl.key.password=123456
#记得修改路径为你秘钥的路径
ssl.truststore.location=/export/servers/kafka_2.11-2.4.1/bin/cart/server.truststore.jks
ssl.truststore.password=123456
- 注释掉以下内容
advertised.listeners=PLAINTEXT://node01:9092
- 进入kafka bin目录重启kafka,注意观察是否报错
bin/kafka-server-start.sh ./config/server.properties
3. 遇到的问题
- cluster.id 不正确解决
进入kafka的logs 目录, 也就是server.properties 中配置的log.dir 的路径
找到meta.properties 修改为报错中的值
- 连接被拒绝
- kafka 内部问题
- 9093端口未开放
- 主机hosts 问题 映射成指定的主机名
4. 配置logstash输出到kafka的output
把之前通过keytool 生成的 server.keystore.jks 和 server.truststore.jks 文件拷贝到 logstash 节点
output {
kafka {
codec => json
topic_id => "logstash_test"
ssl_keystore_location => "/opt/cart/server.keystore.jks"
ssl_keystore_password => "123456"
ssl_keystore_type => "JKS"
ssl_truststore_location => "/opt/cart/server.truststore.jks"
ssl_truststore_password => "123456"
ssl_truststore_type => "JKS"
ssl_key_password => "123456"
bootstrap_servers => "host.name:9093"
security_protocol => "SSL"
# 不以主机名作为判断不加会连接不上
ssl_endpoint_identification_algorithm => ""
}
}
5. 最后
欢迎在评论区留言探讨。
参考链接
https://www.orchome.com/171