使用 SASL/PLAIN 设置 kafka 安全集群

问题描述

我尝试通过 https://docs.confluent.io/platform/current/security/security_tutorial.html 使用 SSL 密钥和用户名/密码来设置集群,就像描述的那样。

但未能找到正确的方法来设置密钥的 dname 和代理的参数“super.users”

它被告知要创建一个密钥:

# Without user prompts,pass command line arguments keytool -keystore kafka.server.keystore.jks -alias localhost -keyalg RSA -validity {validity} -genkey -storepass {keystore-pass} -keypass {key-pass}
-dname {distinguished-name} -ext SAN=DNS:{hostname}

然后配置代理的server.properties,我们需要设置一个超级用户

因为本教程将代理间安全协议配置为 SSL,将超级用户名设置为配置的专有名称 在经纪人的证明中。 (查看其他授权配置 选项)。

super.users=User:;User:;User:;User:kafka-broker-metric-reporter

问题是 dname 必须遵循一个模式:“CN=cName,OU=orgUnit,O=org,L=city,S=state,C=countryCode”

此外,kafka 的 CN 有一个限制:必须等于 SAN FQDN 设置。

所以,问题是:

如果我们有一个本地主机并使用单个代理设置集群,我们是否应该为键设置 dname,例如“CN=localhost”,命令将是:

keytool -keystore kafka.server.keystore.jks -alias localhost -genkey
-dname "CN=localhost" -ext SAN=DNS:localhost

然后在 server.properties 条目中:

super.users=User:CN=localhost

如果是真的,第二个问题: 如果我们仍然有一个本地主机并在那里设置了 2 个单独的代理。那么,我们会有相同的 dname 吗?

解决方法

实际上,使用 dname 在配置中添加用户是正确的:

super.users=User:CN=localhost

这不是很明显,但确实有效。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...