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

Node.js连接SQL Server报错:SSL协议不兼容问题排查

解决Node.js v19.6.0连接SQL Server时的SSL协议不支持错误

你遇到的ssl_choose_client_version:unsupported protocol错误,核心原因是目标SQL Server实例SVGGNAPP17\SQLEXPRESS使用了Node.js 19默认禁用的旧版SSL/TLS协议(比如TLS 1.0或1.1),而其他正常连接的服务器应该已经启用了TLS 1.2及以上版本。

以下是几种可行的解决方法:

方法1:通过Node.js启动参数放宽TLS版本限制

Node.js 19默认将最低TLS版本设为1.2,你可以在启动应用时添加参数,允许客户端使用更低版本的协议:

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

如果TLS 1.1还是不行,尝试用--tls-min-v1.0(不推荐长期使用,因为旧协议存在安全风险)。

方法2:升级目标SQL Server的SSL协议版本(最优解)

如果有权限操作目标SQL Server,建议直接启用TLS 1.2,这是最安全的方案:

  1. 打开SQL Server配置管理器,依次展开SQL Server网络配置 -> [你的实例名]的协议,确保TCP/IP已启用。
  2. 右键TCP/IP选择属性,切换到IP地址标签,拉到最底部找到SSL部分,将强制加密设为是,并选择合适的SSL证书(如果没有可生成自签名证书)。
  3. 打开注册表编辑器(谨慎操作),定位到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2:
    • 确保Client和Server子项存在,将它们的Enabled值设为1,DisabledByDefault值设为0。
  4. 重启SQL Server服务,之后Node.js即可用默认TLS 1.2协议正常连接。

方法3:在连接配置中指定TLS版本

直接在mssql的连接配置里添加TLS选项,不需要修改启动参数:

const config = {
  server: "SVGGNAPP17\\SQLEXPRESS",
  database: "***",
  user: "***",
  password: "***",
  options: {
    trustServerCertificate: true,
    trustedConnection: true,
    encrypt: true,
    tlsOptions: {
      minVersion: 'TLSv1.1' // 根据服务器实际支持的版本调整,可选'TLSv1.0'
    }
  },
};

另外,建议确认目标实例的端口号(SQLEXPRESS默认可能用动态端口),在配置中添加port字段指定实际端口,避免连接时端口识别错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:07:23