首页 > 解决方案 > 如何配置 sequalize & node mysql 以使用新的 aws rds root cert rds-ca-2019

问题描述

随着 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'
  }
}

我想不出使用sequalize 3.x手动添加证书的任何选项

标签: mysqlnode.jssslsequelize.jsamazon-rds

解决方案


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

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

没有 ca 验证的临时修复:

var sequelizeConfig = {
  ...
  host: "xyz.rds.amazonaws.com",
  dialectOptions: {
    ssl: true
  }
}

并通过证书验证:

// 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]
    }
  }
}

thx @jarmod 用于链接,soluto-nashville 的“Amazon RDS 与 Sequelize 的最佳安全实践”一文展示了解决方案


推荐阅读