NW.js / Node.js 使用 node-mssql 时抛出 "SSL routines:ssl_choose_client_version:unsupported protocol" 错误 / 乏味

NW.js / Node.js throws "SSL routines:ssl_choose_client_version:unsupported protocol" error when using node-mssql / tedious

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

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

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

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'
        }
    }
});