我的用例是连接 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 协议将更改流事件发送到 amazon MQ,当我尝试创建与 MQ 的连接时按照 Amazon MQ 文档中的指定,我遇到异常
无法与以下设备建立连接 ssl://X-XXXXXXX-XXX-XXX-XXX-XXXXXX-1.mq.us-east-1.amazonaws.com:61617 由于 PKIX javax.net.ssl.sslhandshakeexception
我知道问题出在哪里了。当我部署服务时没有在 documentDB 的 docker 入口点中指定信任库条目,那么它会与 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 文件。
有人可以为此建议一些解决方案吗?
最后,我通过将证书明确添加到与 AWS 服务建立连接所需的本地信任存储来解决了这个问题。
为了能够使用 documentDB 和 Amazon MQ,您需要添加两个证书列表