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

toy*_*rai 4 sql-server node.js node-webkit tedious

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

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

toy*_*rai 8

抛出错误的原因与Node.js 12 中的更改有关。从版本 12 开始,TLS设置被收紧,默认情况下需要TLS 1.2。该SSL套路:ssl_choose_client_version:不支持的协议,如果错误将会被抛出的SQL Server服务器不支持TLS 1.2

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

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