如何通过 SSL 连接以续集数据库

Tra*_*lly 9 node.js sequelize.js

我似乎无法找到任何文件SEQUELIZE.JS关于如何使用CA.crt为了使连接到我的数据库坐在一个远程服务器上。

我在选项中找到了一些东西,但我似乎无法弄清楚

我试过了

{
 'ssl': true
 'dialectOptions':{
   ssl: {
     ca: 'path/to/ca'
   }
 }     
}
Run Code Online (Sandbox Code Playgroud)

和其他一些事情,但似乎对我不起作用。

有谁能够帮助我?

编辑:

这是我在使用 ca 时遇到的错误

error connecting to db { Error: unable to verify the first certificate
at TLSSocket.<anonymous>
Run Code Online (Sandbox Code Playgroud)

小智 13

由于您没有提到选择的后端数据库,我将提供一个mysql示例以及我建议您如何进行。

首先,dialect直接使用 确认连接,以便mysql2根据需要提供变量:

const connection = mysql.createConnection({
  host: dbVars.host,
  user: dbVars.user,
  database: dbVars.database,
  password: dbVars.password,
  ssl: {
    key: cKey,
    cert: cCert,
    ca: cCA
  }
});
Run Code Online (Sandbox Code Playgroud)

确认该连接后,将其移动到 Sequelize 为:

const sequelize = new Sequelize(dbVars.database, dbVars.user, dbVars.password, {
  host: dbVars.host,
  dialect: 'mysql',
  dialectOptions: {
    ssl: {
      key: cKey,
      cert: cCert,
      ca: cCA
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

注意:正确加载证书是一个学习曲线,需要直接import使用raw-loader. 例子:

import cKey from 'raw-loader!../certs/client-key.pem'; 
Run Code Online (Sandbox Code Playgroud)

  • `fs.fileReadSync` 对我来说也能很好地读取 .pem 文件。 (4认同)
  • 如何获取“cCert”和“cCA”? (4认同)
  • 根据[文档](https://nodejs.org/api/fs.html#fs_fs_readfilesync_path_options),它是“fs.readFileSync”。 (3认同)