【发布时间】:2020-01-29 23:23:20
【问题描述】:
使用java驱动连接atlas mongodb db时,出现SSLHandshakeException,如何解决?
final ConnectionString uriString = new ConnectionString ("mongodb+srv://XXX:XXX@cluster0-ddtis.azure.mongodb.net/test?retryWrites=true&w=majority");
MongoClient mongoClient = MongoClients.create(settings);
MongoDatabase database = mongoClient.getDatabase("test");
System.out.println("Connect to database successfully");
MongoCollection<Document> collection = database.getCollection("movie");
String dbs = mongoClient.listDatabaseNames().first();
System.out.println("dbs" + dbs);
2019-10-01 00:03:23 INFO org.mongodb.driver.cluster:76] 中的异常 连接服务器时监控线程 cluster0-shard-00-02-ddtis.azure.mongodb.net:27017 com.mongodb.MongoSocketWriteException:发送消息时出现异常 com.mongodb.internal.connection.InternalStreamConnection.translateWriteException(InternalStreamConnection.java:551) 在 com.mongodb.internal.connection.InternalStreamConnection.sendMessage(InternalStreamConnection.java:433) 在 com.mongodb.internal.connection.InternalStreamConnection.sendCommandMessage(InternalStreamConnection.java:273) 在 com.mongodb.internal.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:257) 在 com.mongodb.internal.connection.CommandHelper.sendAndReceive(CommandHelper.java:83) 在 com.mongodb.internal.connection.CommandHelper.executeCommand(CommandHelper.java:33) 在 com.mongodb.internal.connection.InternalStreamConnectionInitializer.initializeConnectionDescription(InternalStreamConnectionInitializer.java:105) 在 com.mongodb.internal.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:62) 在 com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:129) 在 com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:117) 在 java.lang.Thread.run(Thread.java:748) 引起: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException:PKIX 路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException:无法 在以下位置找到请求目标的有效认证路径 sun.security.ssl.Alerts.getSSLException(Alerts.java:192) 在 sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1959) 在 sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302) 在 sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296) 在 sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1514) 在 sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216) 在 sun.security.ssl.Handshaker.processLoop(Handshaker.java:1026) 在 sun.security.ssl.Handshaker.process_record(Handshaker.java:961) 在 sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1072) 在 sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385) 在 sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:757) 在 sun.security.ssl.AppOutputStream.write(AppOutputStream.java:123) 在 com.mongodb.internal.connection.SocketStream.write(SocketStream.java:99) 在 com.mongodb.internal.connection.InternalStreamConnection.sendMessage(InternalStreamConnection.java:430) ...省略了9个常见的框架原因: sun.security.validator.ValidatorException:PKIX 路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException:无法 在以下位置找到请求目标的有效认证路径 sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:397) 在 sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:302) 在 sun.security.validator.Validator.validate(Validator.java:260) 在 sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324) 在 sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229) 在 sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124) 在 sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1496) ... 省略了 18 个常见帧 原因: sun.security.provider.certpath.SunCertPathBuilderException:无法 在以下位置找到请求目标的有效认证路径 sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141) 在 sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126) 在 java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280) 在 sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:392)
...省略了 24 个常用帧
【问题讨论】:
-
您使用的是哪个 MongoDB Java 驱动程序版本?
标签: java mongodb mongodb-atlas