Spring Boot MongoDB 连接问题

问题描述 投票:0回答:8

我的 Spring Boot 应用程序正在尝试连接到 MongoDB 数据库。配置添加到 application.yml 文件中。直到昨天,该应用程序在本地运行完全正常。

但是今天我在本地主机上本地运行它时,收到以下错误:

2020-12-03 14:59:03.763[0;39m [32m INFO[0;39m [35m10692[0;39m [2m---[0;39m [2m[ngodb.net:27017][0;39m [36morg.mongodb.driver.cluster              [0;39m [2m:[0;39m Exception in monitor thread while connecting to server edugyanamcluster-shard-00-00.l4au7.mongodb.net:27017

com.mongodb.MongoSocketWriteException: Exception sending message
    at com.mongodb.internal.connection.InternalStreamConnection.translateWriteException(InternalStreamConnection.java:551) ~[mongodb-driver-core-3.11.2.jar:na]
    at com.mongodb.internal.connection.InternalStreamConnection.sendMessage(InternalStreamConnection.java:433) ~[mongodb-driver-core-3.11.2.jar:na]
    at com.mongodb.internal.connection.InternalStreamConnection.sendCommandMessage(InternalStreamConnection.java:273) ~[mongodb-driver-core-3.11.2.jar:na]
    at com.mongodb.internal.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:257) ~[mongodb-driver-core-3.11.2.jar:na]
    at com.mongodb.internal.connection.CommandHelper.sendAndReceive(CommandHelper.java:83) ~[mongodb-driver-core-3.11.2.jar:na]
    at com.mongodb.internal.connection.CommandHelper.executeCommand(CommandHelper.java:33) ~[mongodb-driver-core-3.11.2.jar:na]
    at com.mongodb.internal.connection.InternalStreamConnectionInitializer.initializeConnectionDescription(InternalStreamConnectionInitializer.java:105) ~[mongodb-driver-core-3.11.2.jar:na]
    at com.mongodb.internal.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:62) ~[mongodb-driver-core-3.11.2.jar:na]
    at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:129) ~[mongodb-driver-core-3.11.2.jar:na]
    at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:117) ~[mongodb-driver-core-3.11.2.jar:na]
    at java.base/java.lang.Thread.run(Thread.java:835) ~[na:na]
Caused by: javax.net.ssl.SSLHandshakeException: extension (5) should not be presented in certificate_request
    at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131) ~[na:na]
    at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:117) ~[na:na]
    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:307) ~[na:na]
    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:263) ~[na:na]
    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:254) ~[na:na]
    at java.base/sun.security.ssl.SSLExtensions.<init>(SSLExtensions.java:90) ~[na:na]
    at java.base/sun.security.ssl.CertificateRequest$T13CertificateRequestMessage.<init>(CertificateRequest.java:818) ~[na:na]
    at java.base/sun.security.ssl.CertificateRequest$T13CertificateRequestConsumer.consume(CertificateRequest.java:922) ~[na:na]
    at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:392) ~[na:na]
    at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:443) ~[na:na]
    at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:421) ~[na:na]
    at java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:177) ~[na:na]
    at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:164) ~[na:na]
    at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1180) ~[na:na]
    at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1091) ~[na:na]
    at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:402) ~[na:na]
    at java.base/sun.security.ssl.SSLSocketImpl.ensureNegotiated(SSLSocketImpl.java:721) ~[na:na]
    at java.base/sun.security.ssl.SSLSocketImpl$AppOutputStream.write(SSLSocketImpl.java:998) ~[na:na]
    at com.mongodb.internal.connection.SocketStream.write(SocketStream.java:99) ~[mongodb-driver-core-3.11.2.jar:na]
    at com.mongodb.internal.connection.InternalStreamConnection.sendMessage(InternalStreamConnection.java:430) ~[mongodb-driver-core-3.11.2.jar:na]
    ... 9 common frames omitted

[2m2020-12-03 14:59:05.112[0;39m [33m WARN[0;39m [35m10692[0;39m [2m---[0;39m [2m[  restartedMain][0;39m [36mJpaBaseConfiguration$JpaWebConfiguration[0;39m [2m:[0;39m spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
[2m2020-12-03 14:59:07.468[0;39m [32m INFO[0;39m [35m10692[0;39m [2m---[0;39m [2m[  restartedMain][0;39m [36mpertySourcedRequestMappingHandlerMapping[0;39m [2m:[0;39m Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2ControllerWebMvc#getDocumentation(String, HttpServletRequest)]
[2m2020-12-03 14:59:07.822[0;39m [32m INFO[0;39m [35m10692[0;39m [2m---[0;39m [2m[  restartedMain][0;39m [36m.s.s.UserDetailsServiceAutoConfiguration[0;39m [2m:[0;39m

需要有关问题所在的建议吗?由于代码在几个小时前完全正常工作。

mongodb spring-boot ssl tls1.2
8个回答
18
投票

MongoDB 实际上已经更新了他们的服务器,可能已经更新了他们的密码。 解决方案实际上是在 JVM params 中将 TLS Version 更改为 1.2

可以在 Eclipse 中添加(如果将其用作 IDE)-> 项目 -> 运行方式 -> 运行配置 -> 参数 -> VM 参数,添加 ->

-Djdk.tls.client.protocols=TLSv1.2

14
投票

我可以使用另一个问题中的解决方案来解决此问题。我在 JVM 参数中将 TLS 版本更改为 1.2:

-Djdk.tls.client.protocols=TLSv1.2

5
投票

除了降级到 TLSV1.2 之外,升级 JDK 也可以解决此问题。

对于 JDK 版本 11.0.0 - 11.0.6,将 JDK 升级到已修补的版本。 JDK-8236039

JDK 版本 13.0.0 - 13.0.02,升级到 13.0.03 应该可以解决此问题 JDK-8241515


1
投票

我确实尝试了所有方法,例如升级 jdk,除了最好的解决方案之外,还有其他可行的解决方案是更改 TLS 版本。

在IDE中右键单击项目 运行方式 -> 运行配置... 并转到参数选项卡 并在 VM 参数中添加以下内容 -Djdk.tls.client.protocols=TLSv1.2

现在运行应用程序,它应该可以正常工作。

您可以参考所附图片以获得更清晰的信息。

enter image description here

enter image description here


1
投票

我从 JDK 11.0.7 更新到 11.0.10,现在可以使用了


1
投票

我遇到了这个问题,首先将此参数添加到 JVM 中解决:

-Djdk.tls.client.protocols=TLSv1.2

但后来,我将 openjdk:12 docker 镜像更改为最新的 openjdk:11 (LTS),它解决了问题,不再需要 -D 参数 =)


0
投票

我有同样的问题https://bugs.openjdk.java.net/browse/JDK-8236039我将我的JDK更改为JDK-15 zulu:https://www.azul.com/downloads/zulu -community/?version=java-15-mts 它解决了问题,我之前使用的是 Open JDK 的版本。


0
投票

我已经添加了虚拟机参数,但它仍然对我不起作用。我使用的是jdk-17

© www.soinside.com 2019 - 2024. All rights reserved.