You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js连接MSSQL失败:SSL协议不兼容问题求助

解决Node.js连接SQL Server的SSL协议不兼容问题

错误原因分析

报错信息里的ssl_choose_client_version:unsupported protocol明确指向SSL/TLS协议版本不兼容:

  • Node.js 18.x使用的OpenSSL版本默认禁用了TLS 1.0/1.1等旧协议
  • 你的SQL Server可能仅启用了旧版本TLS协议,导致双方协议版本无交集

解决方案

方案1:升级SQL Server的TLS协议版本(推荐,更安全)

  • 打开SQL Server配置管理器,找到SQL Server网络配置下的对应实例协议
  • 在操作系统层面(注册表或组策略)配置并启用TLS 1.2或更高版本
  • 重启SQL Server服务使配置生效

方案2:修改Node.js启动参数,允许旧协议

如果暂时无法升级SQL Server,可通过启动参数让Node.js兼容旧TLS版本:

node --tls-min-v1.1 your-app.js

根据SQL Server实际启用的协议,选择--tls-min-v1.0或--tls-min-v1.1

方案3:在连接配置中指定SSL协议版本

在mssql的连接配置options中添加cryptoCredentialsDetails,强制指定兼容的SSL版本:

const configMsSql = {
    server:"myserver",
    port:myport,
    user:"username",
    password:"pass",
    database:"dbname",
    options:{
        trustServerCertificate: true,
        cryptoCredentialsDetails: {
            minVersion: 'TLSv1.1' // 或'TLSv1.0',根据SQL Server配置调整
        }
    }
};

额外代码优化

你的导出方式会导致启动时自动执行连接,建议改为导出函数,避免不必要的提前执行:

// 原代码
module.exports = connectState();

// 修改为
module.exports = connectState;
// 使用时:const connect = await require('./your-file')();

内容的提问来源于stack exchange,提问作者Ldev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 10:15:34