是否有任何关于如何在 Spring Cloud Stream 应用程序中使用 AWS MSK 详细信息的信息?
我相信我们需要生成一个密钥库和信任库,然后将它们合并到我们的应用程序中?我浏览了 AWS MSK 的“客户端身份验证”页面,发现这非常令人困惑。
任何人都可以帮我解决这个问题吗?我只是想部署这个使用 AWS MSK(3 个代理)的应用程序。
谢谢你。
是否有任何关于如何在 Spring Cloud Stream 应用程序中使用 AWS MSK 详细信息的信息?
我相信我们需要生成一个密钥库和信任库,然后将它们合并到我们的应用程序中?我浏览了 AWS MSK 的“客户端身份验证”页面,发现这非常令人困惑。
任何人都可以帮我解决这个问题吗?我只是想部署这个使用 AWS MSK(3 个代理)的应用程序。
谢谢你。
简短的回答:您的 kafka 客户端将在配置中需要这个:
# security settings
security.protocol=SSL
ssl.truststore.location=/tmp/kafka.client.truststore.jks
ssl.truststore.password=
ssl.endpoint.identification.algorithm=
也就是说,如果您使用教程中的相同 JVM 信任库,并且没有密码。ssl.endpoint.identification.algorithm
关闭主机名验证。
长答案:阅读完教程后,我想知道同样的事情,想知道为什么 JVM 信任库在连接到 MSK 时会神奇地工作。解释是这样的:
如果您查看此信任库导入的证书
keytool --list -v -keystore /tmp/kafka.client.truststore.jks | grep Owner
其中之一是Starfield Services Root Certificate Authority
,当亚马逊收购该公司时,CA 成为亚马逊的 CA 之一(在此处查看所有内容https://www.amazontrust.com/repository/)。由于 JVM 信任库信任这个 CA,它也信任任何由 CA 签名的东西,MSK 集群就是其中之一。
如果您希望生成自己的信任库,请下载 Amazon 的证书之一并导入
keytool -keystore kafka.client.truststore.jks -alias CARoot -importcert -file {downloaded-cert} -storepass {your-password}
谢谢,延安
我一直在寻找相同的东西,因此发布作为答案可能会对其他人有所帮助。这是可以提供帮助的官方文档。
在 Ubuntu 机器上为我工作,你也不需要导入/创建只使用现有的 cacerts
cp /home/ubuntu/.sdkman/candidates/java/8.0.232.hs-adpt/jre/lib/security/cacerts /tmp/kafka.client.truststore.jks
创建一个以client.properties
下列内容命名的文本文件。
security.protocol=SSL
ssl.truststore.location=/tmp/kafka.client.truststore.jks
我们很乐意消费消息
./kafka-console-consumer.sh --bootstrap-server mykafka.kafka.us-west-2.amazonaws.com:9094 --consumer.config /home/ubuntu/client.properties --topic demo --from-beginning