0

我的用例是连接 amazon documentDB 以读取更改流并在 EKS 集群上部署该更改流事件后从同一服务将其发送到 amazon MQ。在读取 rds-combined-ca-bundle.pem 中指定的密钥并通过 docker 入口点中的以下条目将其导入本地信任存储后,我能够与 documentDB 连接:

"-Djavax.net.ssl.trustStorePassword=*********","-Djavax.net.ssl.trustStore=/app/certs/truststore.jks",

在与 documentDB 建立连接并读取更改流后(只要集合中有插入、替换或删除),我试图通过 openwire 协议将更改流事件发送到亚马逊 MQ,当我试图创建与 MQ 的连接时在 Amazon MQ 文档中指定,我收到异常

由于 PKIX javax.net.ssl.sslhandshakeexception,无法与 ssl://X-XXXXXXX-XXX-XXX-XXX-XXXXXX-1.mq.us-east-1.amazonaws.com:61617 建立连接

我知道问题出在哪里。当我在没有在 docker 入口点为 documentDB 指定信任库条目的情况下部署我的服务时,它会与 MQ 连接,并且我也可以将模拟事件发送到 MQ,但是当我指定信任库时使用 documentDB,服务也会在信任库中查找 MQ 的证书这实际上不是 MQ 所必需的,因为它由 AWS 管理。我们不需要使用 Amazon MQ 指定信任库和密钥库。

那么我的问题是如何从同一服务连接 Amazon documentDB 和 Amazon MQ?我的要求是从 documentDB 读取更改流事件并将其从同一服务发送到 amazon MQ。我正在使用一个简单的 java 服务,但如果有一些具体的解决方案可用,可以将其转换为 Spring Boot。

我尝试为 MQ 搜索任何 pem 文件,我可以使用类似于 documentDB 的方式使用它,但正如我之前提到的,Amazon MQ 是 Active MQ 的托管服务,因此没有可用的 pem 文件。

有人可以为此提出一些解决方案吗?

4

1 回答 1

0

最后,我通过将证书显式添加到与 AWS 服务建立连接所需的本地信任库中来解决了这个问题。

于 2021-06-07T02:27:08.043 回答