使用node-mssql / 乏味时,NW.js / Node.js 抛出“SSL 例程:ssl_choose_client_version:不支持的协议”错误

问题描述 投票:0回答:2

我已经找到了这个问题的答案,只是想记录我的发现。

使用最新版本的 NW.js(和 Node.js)时,我在使用 node-mssql / tedious 模块时遇到问题。即使像连接到SQL Server服务器这样简单的任务也会抛出SSL例程:ssl_choose_client_version:不支持的协议错误。

node.js sql-server node-webkit tedious
2个回答
22
投票

引发错误的原因与 Node.js 12 中的更改有关。从版本 12 开始,TLS 设置更加严格,默认需要 TLS 1.2。如果 SQL Server 服务器不支持 TLS 1.2,则会抛出 SSL 例程:ssl_choose_client_version:不支持的协议 错误。

Node 中,启动节点时可以使用命令行标志

--tls-min-v1.0
来更改默认设置。由于 NW 无法将命令行标志传递到 Node 上下文,因此解决方案是在指定
cryptoCredentialsDetails
的连接配置中设置自定义
minVersion: 'TLSv1'
选项,如下所示:

mssql.connect({
    user: "this.user",
    password: "this.password",
    server: "this.server",
    database: "this.database",
    options: {
        cryptoCredentialsDetails: {
            minVersion: 'TLSv1'
        }
    }
});

0
投票

您看到的警告(弃用警告:RFC 6066 不允许将 TLS 服务器名称设置为 IP 地址)与在 TLS 握手中使用 IP 地址而不是主机名有关,通常更多的是警告比严重错误。但是,您面临的连接错误更为重要,它表明使用 SSL/TLS 连接到 SQL Server 时出现问题。

尝试通过显式指定选项并禁用 SSL 来调整连接配置。例如:

    const config = {
         user: 'your_username',
         password: 'your_password',
         server: 'your_sql_server',
         database: 'your_database',
         options: {
                  encrypt: false, // Disable SSL/TLS
              },
       };
© www.soinside.com 2019 - 2024. All rights reserved.