微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用SSLjks + truststore连接docummentdbmongo时出现Java错误-docker-compose

如何解决使用SSLjks + truststore连接docummentdbmongo时出现Java错误-docker-compose

我有一个在docker-compose上运行的Java环境(SpringBoot),我在ec2(aws)上进行了部署。我已经在Docummentdb(aws)中配置了我的数据库,该数据库已经在lambda中运行并且可以使用SSL连接(JKS-TrustStore)正常连接,但是当尝试使用ec2容器进行连接时,它显示以下错误

2020-10-13 00:28:11.534信息6 --- [onaws.com:27017] org.mongodb.driver.cluster:监视线程中的异常 连接到服务器时 CONNECTION.us-east-1.docdb.amazonaws.com:27017

com.mongodb.MongoSocketWriteException:在以下位置发送消息的异常 com.mongodb.internal.connection.InternalStreamConnection.translateWriteException(InternalStreamConnection.java:551) 〜[mongo-java-driver-3.12.7.jar!/:na]在 com.mongodb.internal.connection.InternalStreamConnection.sendMessage(InternalStreamConnection.java:433) 〜[mongo-java-driver-3.12.7.jar!/:na]在 com.mongodb.internal.connection.InternalStreamConnection.sendCommandMessage(InternalStreamConnection.java:273) 〜[mongo-java-driver-3.12.7.jar!/:na]在 com.mongodb.internal.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:257) 〜[mongo-java-driver-3.12.7.jar!/:na]在 com.mongodb.internal.connection.CommandHelper.sendAndReceive(CommandHelper.java:83) 〜[mongo-java-driver-3.12.7.jar!/:na]在 com.mongodb.internal.connection.CommandHelper.executeCommand(CommandHelper.java:33) 〜[mongo-java-driver-3.12.7.jar!/:na]在 com.mongodb.internal.connection.InternalStreamConnectionInitializer.initializeConnectionDescription(InternalStreamConnectionInitializer.java:105) 〜[mongo-java-driver-3.12.7.jar!/:na]在 com.mongodb.internal.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:62) 〜[mongo-java-driver-3.12.7.jar!/:na]在 com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:129) 〜[mongo-java-driver-3.12.7.jar!/:na]在 com.mongodb.internal.connection.DefaultServerMonitor $ ServerMonitorRunnable.run(DefaultServerMonitor.java:117) 〜[mongo-java-driver-3.12.7.jar!/:na]在 java.base / java.lang.Thread.run(Thread.java:834)〜[na:na]原因: javax.net.ssl.SSLHandshakeException:PKIX路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException:无法 在以下位置找到到所需目标的有效认证路径 java.base / sun.security.ssl.Alert.createSSLException(Alert.java:131) 〜[na:na]在 java.base / sun.security.ssl.TransportContext.fatal(TransportContext.java:320) 〜[na:na]在 java.base / sun.security.ssl.TransportContext.fatal(TransportContext.java:263) 〜[na:na]在 java.base / sun.security.ssl.TransportContext.fatal(TransportContext.java:258) 〜[na:na]在 java.base / sun.security.ssl.CertificateMessage $ T12CertificateConsumer.checkServerCerts(CertificateMessage.java:645) 〜[na:na]在 java.base / sun.security.ssl.CertificateMessage $ T12CertificateConsumer.onCertificate(CertificateMessage.java:464) 〜[na:na]在 java.base / sun.security.ssl.CertificateMessage $ T12CertificateConsumer.consume(CertificateMessage.java:360) 〜[na:na]在 java.base / sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:392) 〜[na:na]在 java.base / sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:443) 〜[na:na]在 java.base / sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:421) 〜[na:na]在 java.base / sun.security.ssl.TransportContext.dispatch(TransportContext.java:177) 〜[na:na]在 java.base / sun.security.ssl.SSLTransport.decode(SSLTransport.java:164) 〜[na:na]在 java.base / sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1151) 〜[na:na]在 java.base / sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1062) 〜[na:na]在 java.base / sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:402) 〜[na:na]在 java.base / sun.security.ssl.SSLSocketImpl.ensureNegotiated(SSLSocketImpl.java:716) 〜[na:na]在 java.base / sun.security.ssl.SSLSocketImpl $ AppOutputStream.write(SSLSocketImpl.java:969) 〜[na:na]在 com.mongodb.internal.connection.socketStream.write(SocketStream.java:99) 〜[mongo-java-driver-3.12.7.jar!/:na]在 com.mongodb.internal.connection.InternalStreamConnection.sendMessage(InternalStreamConnection.java:430) 〜[mongo-java-driver-3.12.7.jar!/:na] ...省略了9个常见框架 引起原因:sun.security.validator.ValidatorException:PKIX路径 构建失败: sun.security.provider.certpath.SunCertPathBuilderException:无法 在以下位置找到到所需目标的有效认证路径 java.base / sun.security.validator.PKIXValidator.dobuild(PKIXValidator.java:439) 〜[na:na]在 java.base / sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:306) 〜[na:na]在 java.base / sun.security.validator.Validator.validate(Validator.java:264) 〜[na:na]在 java.base / sun.security.ssl.x509trustmanagerImpl.validate(x509trustmanagerImpl.java:313) 〜[na:na]在 java.base / sun.security.ssl.x509trustmanagerImpl.checkTrusted(x509trustmanagerImpl.java:222) 〜[na:na]在 java.base / sun.security.ssl.x509trustmanagerImpl.checkServerTrusted(x509trustmanagerImpl.java:129) 〜[na:na]在 java.base / sun.security.ssl.CertificateMessage $ T12CertificateConsumer.checkServerCerts(CertificateMessage.java:629) 〜[na:na] ...省略了23个常见框架 sun.security.provider.certpath.SunCertPathBuilderException:无法 在以下位置找到到所需目标的有效认证路径 java.base / sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141) 〜[na:na]在 java.base / sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126) 〜[na:na]在 java.base / java.security.cert.CertPathBuilder.build(CertPathBuilder.java:297) 〜[na:na]在 java.base / sun.security.validator.PKIXValidator.dobuild(PKIXValidator.java:434) 〜[na:na] ...省略了29个常见框架

在测试lambda连接中使用的相同文件,也正在我的应用程序的主连接中使用,即使在传递了.jks文件的完整路径之后,错误仍然存​​在。

解决方法

尝试使用 -Djavax.net.debug = ssl,握手进行调试。

检查证书链,可能是对ec2容器的验证更具限制性吗?

lambda和ec2 java.security 文件中的 keystore.type 参数的设置是什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。