Ubuntu Docker部署SQL Server:NodeJS mssql库连接证书验证失败
解决Node.js mssql库连接SQL Server Docker容器的SSL证书验证错误
问题原因
SSMS的信任存储默认包含GoDaddy的根证书与中间证书,仅需主证书即可完成验证;但Node.js的TLS模块会严格校验完整证书链,你当前仅配置了主证书,缺少GoDaddy的中间证书链,导致验证失败。
解决方案
合并主证书与中间证书
将GoDaddy提供的主证书(certname.crt)和中间证书包(gd_bundle-g2-g1.crt)合并为一个完整的PEM文件,主证书内容在前,中间证书内容在后:cat certname.crt gd_bundle-g2-g1.crt > mssql-fullchain.pem更新容器证书配置
- 将合并后的
mssql-fullchain.pem替换原有的mssql.pem,挂载到Docker容器的/etc/ssl/certs/目录 - 确保
mssql.conf中的certificate配置指向该完整链文件(若直接覆盖原mssql.pem则无需修改配置)
- 将合并后的
重启容器并验证
重启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.检查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
相关产品推荐
相关产品推荐

