Spring Boot连接MongoDB遇MongoSocketWriteException及SSL错误求助
Spring Boot连接MongoDB SSL内部错误解决方法
关闭不必要的SSL连接
如果你的MongoDB服务端没要求SSL加密,直接在配置文件里关闭SSL:spring.data.mongodb.ssl-enabled=false正确配置SSL信任库(需SSL连接时)
必须用SSL的话,确保已导入MongoDB服务端的CA证书到信任库,然后在配置里指定:spring.data.mongodb.ssl-enabled=true spring.data.mongodb.ssl-trust-store=classpath:mongod-truststore.jks spring.data.mongodb.ssl-trust-store-password=你的信任库密码导入证书的命令(替换对应文件路径):
keytool -import -alias mongodb-ca -file mongodb-ca.crt -keystore mongod-truststore.jks调整TLS版本兼容性
部分MongoDB服务端不支持高版本TLS,给JVM添加参数指定兼容版本:-Djdk.tls.client.protocols=TLSv1.2或者在配置文件里追加额外参数:
spring.data.mongodb.additional-options=sslEnabled=true&tls=TLSv1.2临时关闭主机名验证(仅测试环境)
如果是自建证书导致主机名不匹配,测试环境可以临时关闭验证:spring.data.mongodb.ssl-invalid-host-name-allowed=true升级MongoDB驱动版本
旧驱动可能存在SSL兼容bug,升级spring-boot-starter-data-mongodb到最新稳定版:
Maven示例:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> <version>3.2.5</version> <!-- 替换为最新稳定版 --> </dependency>Gradle示例:
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb:3.2.5' // 替换为最新稳定版排查网络与证书有效性
确认MongoDB地址、端口能正常访问,没有防火墙拦截;检查证书是否过期,以及证书中的域名是否和服务端地址匹配。
内容的提问来源于stack exchange,提问作者Marimuthu S
相关产品推荐
相关产品推荐

