<p>乏味的 6.1.2 节点 12.4.0 有问题:SSL 例程:ssl_choose_client_version:不支持的协议</p>

创建于 2019-06-12  ·  5评论  ·  资料来源: tediousjs/tedious

嗨,任何人,
正如标题所提到的,节点 10 的工作代码,而不是节点 12 的工作代码,它报告:

连接丢失 - 3540:错误:1425F102 :SSL例程:ssl_choose_client_version :不支持的协议:c :\ws\deps\openssl\openssl\ssl\statem\statem_lib.c:1922:
{"message":"无法连接到localhost:1433 - 流被销毁后无法调用 write","code":"ESOCKET"}

有什么帮助吗? 操作系统是 windows 10 64 位,SQL Server 是 2012 64 位

最有用的评论

问题解决了!
使用节点 12+,配置更改为:
const 配置:ConnectionConfig = {
服务器: '...',
身份验证:{ 类型:'默认',选项:{ 用户名:'...',密码:'...' } },
选项:{ ...,加密:假}
}

所有5条评论

问题解决了!
使用节点 12+,配置更改为:
const 配置:ConnectionConfig = {
服务器: '...',
身份验证:{ 类型:'默认',选项:{ 用户名:'...',密码:'...' } },
选项:{ ...,加密:假}
}

嘿@c5soft! 👋

我知道禁用加密“解决”了您的问题。 这对于您的用例来说可能是可以接受的,但禁用加密并不是真正的解决方案。 😅

对于那些遇到类似错误的人,这是因为自 Node.js 12 以来,默认的 TLS 设置被收紧了。 很可能您的 SQL Server 不支持 TLS 1.2,但在 Node.js 12 中默认需要它。您可以在启动节点时通过命令行标志(例如--tls-min-v1.0 )或通过传递自定义指定minVersion: 'TLSv1'或您需要使用的任何 TLS 版本的Connection构造函数的cryptoCredentialsDetails选项。

以防万一有人遇到这个问题,同样的事情发生在节点的 activeDirectory2 上,基于 LDAPJS:将该选项添加到 tlsOptions 解决了问题

问题解决了!
使用节点 12+,配置更改为:
const 配置:ConnectionConfig = {
服务器: '...',
身份验证:{ 类型:'默认',选项:{ 用户名:'...',密码:'...' } },
选项:{ ...,加密:假}
}

谢谢 !!!

嘿@c5soft! 👋

我知道禁用加密“解决”了您的问题。 这对于您的用例来说可能是可以接受的,但禁用加密并不是真正的解决方案。 😅

对于那些遇到类似错误的人,这是因为自 Node.js 12 以来,默认的 TLS 设置被收紧了。 很可能您的 SQL Server 不支持 TLS 1.2,但在 Node.js 12 中默认需要它。您可以在启动节点时通过命令行标志(例如--tls-min-v1.0 )或通过传递自定义指定minVersion: 'TLSv1'或您需要使用的任何 TLS 版本的Connection构造函数的cryptoCredentialsDetails选项。

太感谢了!
它适用于我的 nestjs 项目!

对于那些在 nestjs 中遇到同样问题的人。

TypeOrmModule.forRoot({
      type: 'mssql',
      host: 'localhost',
      port: 1433,
      username: 'root',
      password: 'root',
      database: 'test',
      entities: [],
      synchronize: true,
       options: {
          cryptoCredentialsDetails: {
            minVersion: 'TLSv1'
          }
        }
}),
此页面是否有帮助?
0 / 5 - 0 等级