NodeJS 中的 AWS RDS SSL 中的连接错误



我正在尝试通过带有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连接证书时,一切正常。

关于如何解决这个问题的任何想法?

多谢!

该问题与Mysql版本和TLS版本有关。此矩阵显示,对于MySQL 5.6,仅支持TLS 1.0。节点.js 12 默认使用 TLS 1.2。

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.SSLSupport

在连接之前执行此操作,因为这对文件的权限不足

sudo chmod 755 rds-combined-ca-bundle.pem   

警告:保留强密码,此密码很容易被猜到

如果您仍然发现问题,请检查 IAM 对 lambda 的权限,或者检查 RDS 和 lambda 是否在同一 VPC 中。

最新更新