You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu Docker部署SQL Server:NodeJS mssql库连接证书验证失败

解决Node.js mssql库连接SQL Server Docker容器的SSL证书验证错误

问题原因

SSMS的信任存储默认包含GoDaddy的根证书与中间证书,仅需主证书即可完成验证;但Node.js的TLS模块会严格校验完整证书链,你当前仅配置了主证书,缺少GoDaddy的中间证书链,导致验证失败。

解决方案

  1. 合并主证书与中间证书
    将GoDaddy提供的主证书(certname.crt)和中间证书包(gd_bundle-g2-g1.crt)合并为一个完整的PEM文件,主证书内容在前,中间证书内容在后:

    cat certname.crt gd_bundle-g2-g1.crt > mssql-fullchain.pem
    
  2. 更新容器证书配置

    • 将合并后的mssql-fullchain.pem替换原有的mssql.pem,挂载到Docker容器的/etc/ssl/certs/目录
    • 确保mssql.conf中的certificate配置指向该完整链文件(若直接覆盖原mssql.pem则无需修改配置)
  3. 重启容器并验证
    重启SQL Server Docker容器,查看日志确认证书加载成功:

    The certificate [Certificate File:'/etc/ssl/certs/mssql-fullchain.pem', Private Key File:'/etc/ssl/private/mssql.key'] was successfully loaded for encryption.
    
  4. 检查Node.js连接配置
    确保连接配置中开启加密,且不要通过rejectUnauthorized: false绕过验证(不安全),示例配置:

    const sql = require('mssql');
    const config = {
        user: '你的数据库账号',
        password: '你的数据库密码',
        server: 'domainexample.com',
        port: 你的端口号,
        database: '目标数据库名',
        options: {
            encrypt: true
        }
    };
    
    sql.connect(config)
      .then(() => console.log('连接成功'))
      .catch(err => console.error('连接失败', err));
    

内容的提问来源于stack exchange,提问作者Mateo Buitrago

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 05:39:52