Java AWS Kafka(MSK)-如何生成密钥库和信任库,并在我的Spring Cloud Stream应用程序中使用它们?

Java AWS Kafka(MSK)-如何生成密钥库和信任库,并在我的Spring Cloud Stream应用程序中使用它们?,java,amazon-web-services,spring-kafka,spring-cloud-stream,aws-msk,Java,Amazon Web Services,Spring Kafka,Spring Cloud Stream,Aws Msk,有没有关于如何在我的Spring Cloud Stream应用程序中使用AWS MSK详细信息的信息 我相信我们需要生成一个密钥库和信任库,然后将它们合并到我们的应用程序中?我浏览了AWS MSK的“客户端身份验证”页面,发现这非常令人困惑 有人能帮我解决这个问题吗?我只是尝试部署这个使用AWS MSK(3个代理)的应用程序 谢谢。简短回答: 您的kafka客户端在配置中需要: # security settings security.protocol=SSL ssl.truststore.lo

有没有关于如何在我的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根证书颁发机构
,当Amazon收购该公司时,CA成为Amazon的其中一个(请参见此处的所有内容)。因为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