Spring Boot连接Mongo Atlas超时,已尝试Stack Overflow方案仍未解决
问题根因
你遇到的javax.net.ssl.SSLHandshakeException: extension (5) should not be presented in certificate_request异常是Java 11.0.2、11.0.3版本的已知TLS协议解析缺陷,Mongo Atlas服务器返回的证书请求携带的TLS扩展被该版本JDK错误拦截,导致SSL握手失败,最终触发连接超时。
解决方案
- 方案1(最推荐):升级JDK版本到11.0.4及以上,该版本官方已修复此TLS扩展解析bug,无需修改任何项目配置即可正常连接。
- 方案2(临时兼容,无需升级JDK):给Spring Boot应用添加JVM启动参数,强制使用TLS1.2协议连接:
如果使用Maven的spring-boot插件启动,可在pom.xml中添加如下配置:-Djdk.tls.client.protocols=TLSv1.2<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <jvmArguments>-Djdk.tls.client.protocols=TLSv1.2</jvmArguments> </configuration> </plugin> - 额外配置修正:删除URI中额外添加的
ssl=true和sslInvalidHostNameAllowed=true参数,mongodb+srv协议默认会自动开启SSL校验,额外配置反而可能引发其他异常,保持如下基础配置即可:spring.data.mongodb.uri=mongodb+srv://user:pwd@cluster.mongodb.net/test?retryWrites=true&w=majority
内容的提问来源于stack exchange,提问作者Prabhakaran
相关产品推荐
相关产品推荐

