NodeJS 中的 AWS RDS SSL 连接错误
Posted
技术标签:
【中文标题】NodeJS 中的 AWS RDS SSL 连接错误【英文标题】:Connection error in AWS RDS SSL in NodeJS 【发布时间】:2020-05-18 15:14:48 【问题描述】:我正在尝试通过带有 SSL 的 Lambda NodeJS 12.x 连接到 RDS。但是我收到这些错误:
Error: 4506652096:error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol:
library: 'SSL routines',
function: 'ssl_choose_client_version',
reason: 'unsupported protocol',
code: 'HANDSHAKE_SSL_ERROR'
我是这样连接的:
const pool = mysql.createPool(
connectionLimit : 10,
host : 'db.cqgcxllqwqnk.eu-central-1.rds.amazonaws.com',
ssl :
ca : fs.readFileSync(__dirname + '/rds-ca-2019-root.pem')
,
user : ‘xxxxx’,
password : ‘xxxxxx’,
database : ‘xxxxxx’,
multipleStatements : true
);
当我通过 MySql Workbench 连接证书时,一切正常。
你知道如何解决这个问题吗?
非常感谢!
【问题讨论】:
【参考方案1】:问题与Mysql版本和TLS版本有关。该矩阵显示,对于 MySQL 5.6,仅支持 TLS 1.0。 Node.js 12 默认使用 TLS 1.2。
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.SSLSupport
【讨论】:
【参考方案2】:在连接之前执行此操作,因为它对文件的权限不足
sudo chmod 755 rds-combined-ca-bundle.pem
警告:保留一个强密码,这个密码很容易被猜到
如果您仍然发现问题,请检查 IAM 对 lambda 的权限或检查 RDS 和 lambda 是否在同一个 VPC 中。
【讨论】:
那么这可能是vpc或iam问题以上是关于NodeJS 中的 AWS RDS SSL 连接错误的主要内容,如果未能解决你的问题,请参考以下文章
如何连接nodejs sequelize aws rds mysql数据库和ec2实例
AWS Lambda NodeJS 连接到 RDS Postgres 数据库