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'
}
}
});
我已经找到了这个问题的答案,只是想记录下我的发现。
在使用 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'
}
}
});