AWS Kafka (MSK) - 如何生成 Keystore 和 truststore 并在我的 Spring Cloud Stream 应用程序中使用它们?

Posted

技术标签:

【中文标题】AWS Kafka (MSK) - 如何生成 Keystore 和 truststore 并在我的 Spring Cloud Stream 应用程序中使用它们?【英文标题】:AWS Kafka (MSK) - How to generate Keystore and truststore and use the same in my Spring Cloud Stream application? 【发布时间】:2020-06-02 19:10:02 【问题描述】:

是否有任何关于如何在我的 Spring Cloud Stream 应用程序中使用 AWS MSK 详细信息的信息?

我相信我们需要生成一个密钥库和信任库,然后将它们合并到我们的应用程序中?我浏览了 AWS MSK 的“客户端身份验证”页面,发现非常混乱。

谁能帮我解决这个问题?我只是想部署这个使用 AWS MSK(3 个代理)的应用程序。

谢谢。

【问题讨论】:

【参考方案1】:

我一直在寻找相同的东西,因此发布作为答案可能会对其他人有所帮助。这是official documentation,可以提供帮助。

在 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

【讨论】:

【参考方案2】:

简短回答: 您的 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 成为亚马逊的其中之一(在此处查看所有这些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

谢谢, 延安

【讨论】:

以上是关于AWS Kafka (MSK) - 如何生成 Keystore 和 truststore 并在我的 Spring Cloud Stream 应用程序中使用它们?的主要内容,如果未能解决你的问题,请参考以下文章

AWS Glue集成Kafka/MSK

AWS Glue集成Kafka/MSK

Kafka Connect 与 Amazon MSK

Amazon Kinesis 与 AWS Manage Service Kafka (MSK) -(从本地连接)

Kafka 连接设置以使用 AWS MSK 从 Aurora 发送记录

将 Lambda 连接到 AWS MSK 中的 kafka 主题的最经济有效的方法是啥?