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

如何在Node.js中加密与SQL Server的连接 适用加密方案有哪些

Node.js 与 SQL Server 连接加密方案及最优实践

加密连接配置方法

目前Node.js生态操作SQL Server最常用的驱动是mssql(底层基于tedious实现),按照以下步骤配置即可开启加密:

  1. 先确认SQL Server服务端已经配置好合法的TLS证书,生产环境建议使用公共CA或者企业私有CA签发的证书,避免用自签名证书。SQL Server 2016及以上版本默认会自动生成自签名证书用于加密,但非信任环境下不建议直接使用。
  2. Node.js侧连接配置中开启加密选项,参考配置代码如下:
const sql = require('mssql')
const fs = require('fs')

const dbConfig = {
  server: 'SQL Server实例地址',
  port: 1433,
  database: '目标数据库名',
  user: '数据库账号',
  password: '数据库密码',
  options: {
    // 核心配置:强制开启TLS加密
    encrypt: true,
    // 生产环境必须设为false,开启证书合法性校验,防止中间人攻击
    // 本地开发自测如果用自签名证书可以临时设为true,禁止上生产
    trustServerCertificate: false,
    // 企业私有CA签发证书场景,需要配置根证书完成校验,公共CA签发证书无需配置此项
    cryptoCredentialsDetails: {
      ca: fs.readFileSync('./private-ca-root.pem')
    }
  }
}

// 测试加密连接
async function testEncryptConnect() {
  try {
    await sql.connect(dbConfig)
    console.log('加密连接已正常建立')
  } catch (err) {
    console.error('连接失败:', err)
  }
}

testEncryptConnect()

最优加密方式说明

目前最优的加密方案是基于TLS 1.2及以上版本的原生端到端加密,优势如下:

  • 是SQL Server官方原生支持的能力,不需要额外部署代理、网关等中间层,性能损耗极低,兼容性最好
  • 全链路加密覆盖登录凭证、查询请求、返回结果等所有传输内容,完全避免明文泄露风险,符合各类数据安全合规要求
  • 配置成本极低,只需要修改连接配置项即可完成开启,不需要改业务代码

注意事项

  • 禁止使用TLS 1.0、TLS 1.1版本,这两个版本已经被认定存在安全漏洞,不满足安全要求
  • 任何生产环境场景都不要开启trustServerCertificate: true,该配置会跳过证书校验,攻击者可以轻松通过伪造证书实现中间人攻击窃取数据
  • 如果你用的是云厂商托管的SQL Server服务(比如Azure SQL、阿里云RDS SQL Server),厂商已经默认配置了可信的公共CA证书,直接开启encrypt: true、关闭trustServerCertificate即可,不需要额外配置证书

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:48:03