【问题标题】:Failed to connect to: undefined - self signed certificate when connecting to MSSQL Server on Windows Authentication in Electron application无法连接到:未定义 - 在 Electron 应用程序中连接到 Windows 身份验证上的 MSSQL Server 时的自签名证书
【发布时间】:2021-08-05 14:18:46
【问题描述】:

我正在尝试通过 Electron 应用程序中的 Windows 身份验证连接到 MSSQL 数据库。

我使用包: msnodesqlv8 2.1.0 mssql 7.0.0

结果,当连接池时,显示如下: 'SqlQuery' 的处理程序发生错误:ConnectionError:无法连接到:未定义 - 自签名证书

我的配置代码:

import { IResult, config } from "mssql";

    const connectionSettings: config = {
        server: "my_server_name",
        port: 1443,
        driver: "msnodesqlv8",
        options: {
            trustedConnection: true,
            connectionString: "Data Source=my_server_name;database=my_database;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
        }
    };

我的连接代码:

import { ConnectionPool, IResult, config } from "mssql";

public SqlQuery(poolOptions: config, query: string)
    : Promise<IResult<any>> {
    return new Promise((resolve, reject) => {
        console.log(poolOptions);
        const pool = new ConnectionPool({
            ...poolOptions
        });

        pool.connect()
            .then(() => {
                console.log("CONNECT");
                return pool.query(query);
            })
            .then(values => {
                console.log(values);
                return resolve(values);
            })
            .catch(reason => {
                reject(reason);
            });
    });

【问题讨论】:

  • 如果数据库服务器配置了自签名证书,则需要指定TrustServerCertificate=True
  • 默认情况下,SQL Server 安装程序会创建一个自签名 X.509 证书并将其分配给实例。您有三个选择: 1. 使用 Dan Guzman 提到的TrustServerCertificate=True; 2. 登录到运行 SQL 实例的 Windows 服务器,将其 X.509 证书的公钥导出到文件中,并将其导入到客户端计算机的 Trusted Certificates/Roots 存储中; 3. 从 CA(或您的组织)获取(受信任的)X.509 证书,并通过 SQL Server 配置管理器将其分配给 SQL 实例。
  • @AlwaysLearning @DanGuzman 不幸的是,当我使用 trustServerCertificate=true 时出现错误:Error: An error occurred while logging in user ""
  • 也许这很重要,但我在电子应用程序中使用此代码。

标签: javascript node.js sql-server typescript electron


【解决方案1】:

我在使用 nodejs 连接 SQL Server 时也遇到了同样的错误 首先你必须在你的项目中安装mssql、stream和繁琐的依赖,然后编写如下代码`

var sql = require("mssql");
var config = {
  user: "USER_NAME",
  password: "PASSWORD",
  server: "Your_SERVER_NAME",
  database: "DATABASE_NAME",
  port: 1433,
  options: {
    encrypt: false,
    useUTC: true,
  },

  pool: {
    max: 100,
    min: 0,
    idleTimeoutMillis: 3600000,
    connectionTimeout: 3600000,
    requestTimeout: 3600000,
  },
};
var database = new sql.ConnectionPool(config);

database
  .connect()
  .then(function () {
    console.log("connected");
  })
  .catch((err) => {
    console.log(err);
  });`

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2013-09-07
    • 1970-01-01
    • 2014-05-16
    相关资源
    最近更新 更多