排查与解决服务器配置中的MongoDB连接错误
MongoDB连接MongoNetworkError(SSL内部错误)解决方法
错误详情
MongoNetworkError: 2C090000:error:0A000438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error:c:\ws\deps\openssl\openssl\ssl\record\rec_layer_s3.c:1586:SSL alert number 80
at connectionFailureError (E:\mernestate-push\node_modules\mongodb\lib\cmap\connect.js:379:20) at TLSSocket.<anonymous> (E:\mernestate-push\node_modules\mongodb\lib\cmap\connect.js:285:22) at Object.onceWrapper (node:events:634:26) at TLSSocket.emit (node:events:519:28) at emitErrorNT (node:internal/streams/destroy:169:8) at emitErrorCloseNT (node:internal/streams/destroy:128:3) at process.processTicksAndRejections (node:internal/process/task_queues:82:21) { connectionGeneration: 15, [Symbol(errorLabels)]: Set(1) { 'ResetPool' }, [cause]: [Error: 2C090000:error:0A000438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error:c:\ws\deps\openssl\openssl\ssl\record\rec_layer_s3.c:1586:SSL alert number 80 ] { library: 'SSL routines', reason: 'tlsv1 alert internal error', code: 'ERR_SSL_TLSV1_ALERT_INTERNAL_ERROR' } }
解决步骤
检查MongoDB服务端SSL配置
确认MongoDB服务端是否配置了有效且未过期的SSL证书,证书格式(如.pem/.crt)是否符合要求。查看MongoDB服务端日志,定位SSL初始化或握手阶段的具体报错。显式指定兼容的TLS版本
在Node.js连接配置中强制指定TLS版本,避免驱动自动协商时使用不兼容的旧版本。示例代码:const { MongoClient } = require('mongodb'); const client = new MongoClient('mongodb://<host>:<port>/<db>', { tls: true, tlsVersion: 'TLS1_2' // 或根据服务端要求指定TLS1_3 });升级MongoDB Node.js驱动
旧版本驱动可能存在SSL握手兼容性问题,升级到最新稳定版:npm install mongodb@latest验证本地OpenSSL版本
通过node -p "process.versions.openssl"查看当前Node.js依赖的OpenSSL版本,若版本过低(如低于1.1.1),升级Node.js以获得更新的OpenSSL库。排查网络拦截问题
确认服务器与MongoDB实例之间的防火墙、代理未拦截SSL流量,检查MongoDB服务端口(默认27017或云服务的443端口)是否正常开放,代理是否正确处理HTTPS连接。
内容的提问来源于stack exchange,提问作者ahsaan ullah
相关产品推荐
相关产品推荐

