gpt4 book ai didi

ssl - 在 Kafka 集群中设置 SSL 的连接错误

转载 作者:太空宇宙 更新时间:2023-11-03 13:34:01 35 4
gpt4 key购买 nike

我正在尝试在我的 3 节点 Kafka 集群中设置 SSL,但一直遇到连接错误,具体表明代理无法相互连接。它们的形式是:

WARN [Controller-1003-to-broker-1002-send-thread], Controller 1003's connection to broker FQDN:9093 (id: 1002 rack: null) was unsuccessful (kafka.controller.RequestSendThread)

我正在尝试按照此处找到的步骤 (http://kafka.apache.org/documentation.html#security),但我承认我从未使用过 keystore 或证书,所以我很可能会做一些基本的错误。以下是我在所有 3 个 server.properties 文件中更改的设置:

security.inter.broker.protocol=SSL
listeners=SSL://<FQDN>:9093 #Turning off PLAINTEXT to be sure everything is working over SSL
ssl.enabled.protocols=TLSv1.2,TLSv1.1,TLSv1
ssl.key.password=test1234
ssl.keystore.location=/var/private/ssl/server.keystore.jks
ssl.keystore.password=test1234
ssl.truststore.location=/var/private/ssl/server.truststore.jks
ssl.truststore.password=test1234

下面是我在每个 Kafka 代理上运行的命令:

PASSWORD=test1234
VALIDITY=365
FQDN=`hostname --fqdn`

keytool -alias localhost -keystore server.keystore.jks -keypass $PASSWORD -storepass $PASSWORD -genkeypair -validity $VALIDITY -dname "cn=$FQDN, ou=development, o=mycom.com, l=stl, st=mo, c=jv" -keyalg RSA

openssl req -new -x509 -keyout ca-key -out ca-cert -days $VALIDITY
keytool -keystore server.truststore.jks -alias CARoot -import -file ca-cert -storepass test1t34 -noprompt
keytool -keystore client.truststore.jks -alias CARoot -import -file ca-cert -storepass $PASSWORD -noprompt

keytool -keystore server.keystore.jks -alias localhost -certreq -file cert-file -storepass $PASSWORD
openssl x509 -req -CA ca-cert -CAkey ca-key -in cert-file -out cert-signed -days $VALIDITY -CAcreateserial -passin pass:$PASSWORD
keytool -keystore server.keystore.jks -alias CARoot -import -file ca-cert -storepass $PASSWORD -noprompt
keytool -keystore server.keystore.jks -alias localhost -import -file cert-signed -storepass $PASSWORD -noprompt

cp ./server.truststore.jks /var/private/ssl/server.truststore.jks
cp ./server.keystore.jks /var/private/ssl/server.keystore.jks

在这些命令结束时,每个代理都有自己的本地 server.truststore.jks 和 server.keystore.jks,它们没有与任何其他代理交互。

我已验证端口 9093 已打开并可通过 telnet 访问(telnet localIP 9093 工作正常),但是当我运行时

openssl s_client -debug -connect <local IPs>:9093 -tls1 

所有3台机器返回

Verify return code: 19 (self signed certificate in certificate chain)

我应该在所有 3 个代理上运行上述所有命令吗?一些命令改为引用 client.keystore.jks 和 client.truststore.jks。

有谁知道什么设置不正确?

谢谢!

最佳答案

我在一个节点上生成CA,然后复制到所有节点

在所有节点上运行:

keytool -alias localhost -keystore server.keystore.jks -keypass $PASSWORD -storepass $PASSWORD -genkeypair  -validity $VALIDITY -dname "cn=$FQDN, ou=development, o=mycom.com, l=stl, st=mo, c=jv" -keyalg RSA

在一个或本地:

openssl req -new -x509 -keyout ca-key -out ca-cert -days $VALIDITY

将 CA 复制到所有节点

在所有节点上:

keytool -keystore server.truststore.jks -alias CARoot -import -file ca-cert -storepass test1t34 -noprompt

客户端在一个节点上运行,然后复制到客户端:

keytool -keystore client.truststore.jks -alias CARoot -import -file ca-cert -storepass $PASSWORD -noprompt

在所有节点上:

keytool -keystore server.keystore.jks -alias localhost -certreq -file cert-file -storepass $PASSWORD

openssl x509 -req -CA ca-cert -CAkey ca-key -in cert-file -out cert-signed -days $VALIDITY -CAcreateserial -passin pass:$PASSWORD

keytool -keystore server.keystore.jks -alias CARoot -import -file ca-cert -storepass $PASSWORD -noprompt

keytool -keystore server.keystore.jks -alias localhost -import -file cert-signed -storepass $PASSWORD -noprompt

cp ./server.truststore.jks /var/private/ssl/server.truststore.jks

cp ./server.keystore.jks /var/private/ssl/server.keystore.jks

关于ssl - 在 Kafka 集群中设置 SSL 的连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45943527/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com