如何配置 sequalize 和 Node mysql 以使用新的 aws rds 根证书 rds-ca-2019

Man*_*uel 2 mysql ssl amazon-rds node.js sequelize.js

随着 AWS 更改 2019 年 rds 服务的根 ssl 证书,2015 年的旧证书将在 03/2020 年失去有效性。请参阅https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html

如何配置 sequalize 以使用新的 rds-ca-2019 证书?

// current sequalize aws rds configuration as of working with 2015 cert
var sequelizeConfig = {
  ...
  host: "xyz.rds.amazonaws.com",
  dialectOptions": {
    ssl: 'Amazon RDS'
  }
}
Run Code Online (Sandbox Code Playgroud)

我无法找到使用sequalize 3.x手动添加证书的任何选项

Man*_*uel 7

确保更新到最新的节点 mysql 软件包,这可能会解决将来的问题。

截至目前,新的 aws rds-ca-2019 ca 证书似乎尚未合并。https://github.com/mysqljs/mysql/pull/2280

没有 ca 验证的临时修复:

var sequelizeConfig = {
  ...
  host: "xyz.rds.amazonaws.com",
  dialectOptions: {
    ssl: true
  }
}
Run Code Online (Sandbox Code Playgroud)

并进行证书验证:

// get rds-ca-2019 certificate directly from aws https://s3.amazonaws.com/rds-downloads/rds-ca-2019-root.pem to ensure validity!!!
const fs = require('fs');
const rdsCa = fs.readFileSync(__dirname + '/rds-ca-2019-root.pem');

var sequelizeConfig = {
  ...
  host: "xyz.rds.amazonaws.com",
  dialectOptions: {
    ssl: {
      rejectUnauthorized: true,
      ca: [rdsCa]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

谢谢 @jarmod 的链接以及soluto-nashville 的文章“Amazon RDS with Sequelize 的最佳安全实践” ,展示了解决方案