首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >到RDS MySQL/Aurora无服务器集群的SSL连接在Node.js中失败

到RDS MySQL/Aurora无服务器集群的SSL连接在Node.js中失败
EN

Stack Overflow用户
提问于 2018-10-03 20:29:46
回答 2查看 3.2K关注 0票数 4

我已经在RDS MySQL数据库中使用了一段时间的Node.js LTS。我最近开发了一个RDS无服务器Aurora MySQL 5.6集群。与我的其他RDS数据库不同,我无法让Node.js使用Node.js或mysql2适配器用SSL连接到新的无服务器集群。

来自一个具有单个Node.js应用程序的Ubuntu实例:

我可以使用SSL成功地将Node应用程序连接到我的任何旧的RDS数据库(MySQL 5.6.40):

代码语言:javascript
复制
// works with other RDS databases:
const fs = require('fs');
const mysql = require('mysql2');
const config = require('../config');

var connectionArgs = {
  host: config.old_rds_host,
  database: config.old_rds_database,
  user: config.old_rds_user,
  password: config.old_rds_password,
  port: config.rds.port,
  ssl: {
    ca: fs.readFileSync(__dirname + '/../rds-combined-ca-bundle.pem')
  }
}

var connection = mysql.createConnection(connectionArgs);

从同一台机器上,我可以使用MySQL客户端连接到新的RDS集群,而不会出现问题:

代码语言:javascript
复制
// Works with new RDS serverless cluster:
mysql -u rds_serverless_user -p -h new-rds-serverless-cluster.us-west-2.rds.amazonaws.com -P 3306 --ssl --ssl-ca=./rds-combined-ca-bundle.pem

我可以成功地将Node应用程序连接到新的无服务器集群,而无需 SSL:

代码语言:javascript
复制
// Works with new RDS serverless cluster:
const fs = require('fs');
const mysql = require('mysql2');
const config = require('../config');

var connectionArgs = {
  host: config.rds_host,
  database: config.rds_serverless_database,
  user: config.rds_serverless_user,
  password: config.rds_serverless_password,
  port: config.rds.port
}

var connection = mysql.createConnection(connectionArgs);

但是,当我试图用SSL证书连接到新的无服务器集群时,会发现服务器不支持安全连接的错误:

代码语言:javascript
复制
// Fails with new RDS serverless cluster:
const fs = require('fs');
const mysql = require('mysql2');
const config = require('../config');

var connectionArgs = {
  host: config.rds_host,
  database: config.rds_serverless_database,
  user: config.rds_serverless_user,
  password: config.rds_serverless_password,
  port: config.rds.port,
  ssl: {
    ca: fs.readFileSync(__dirname + '/../rds-combined-ca-bundle.pem')
  }
}


var connection = mysql.createConnection(connectionArgs);

Debug: internal, implementation, error 
Error: Server does not support secure connnection
at ClientHandshake.handshakeInit (/home/deploy_user/my-node-rds-app/node_modules/mysql2/lib/commands/client_handshake.js:120:17)
at ClientHandshake.Command.execute (/home/deploy_user/my-node-rds-app/node_modules/mysql2/lib/commands/command.js:40:20)
at Connection.handlePacket (/home/deploy_user/my-node-rds-app/node_modules/mysql2/lib/connection.js:513:28)
at PacketParser.onPacket (/home/deploy_user/my-node-rds-app/node_modules/mysql2/lib/connection.js:81:16)
at PacketParser.executeStart (/home/deploy_user/my-node-rds-app/node_modules/mysql2/lib/packet_parser.js:76:14)
at Socket.<anonymous> (/home/deploy_user/my-node-rds-app/node_modules/mysql2/lib/connection.js:89:29)
at emitOne (events.js:116:13)
at Socket.emit (events.js:211:7)
at addChunk (_stream_readable.js:263:12)
at readableAddChunk (_stream_readable.js:250:11)
at Socket.Readable.push (_stream_readable.js:208:10)
at TCP.onread (net.js:601:20)

那有什么不同?旧的RDS数据库与新的无服务器集群之间唯一明显的区别是旧实例是MySQL 5.6.40,新的RDS集群是Aurora MySQL 5.6.10a。另外,旧的RDS实例主机名解析为单个私有IP,而新集群主机名解析为多个私有IP。

我使用mysql适配器获得相同的结果。我还尝试了mysql适配器中的"Amazon“SSL配置文件,并获得了相同的结果。

我不能使用IAM数据库auth,因为这个服务需要处理超过20个新的连接/秒。

如有任何建议,将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-25 19:03:56

截至2018年10月,Aurora Serverless不支持SSL。1.在你的实验中,你的关系大多被降级为不安全的连接。您应该能够查询状态表来确认这一点。

1

不支持以下特性: 从亚马逊S3桶加载数据 用Aurora MySQL本机函数调用AWS函数 高级审计 极光复制品 回溯 数据库克隆 IAM数据库认证 跨区域读取副本 从MySQL DB实例还原快照 从亚马逊S3迁移备份文件 使用安全套接字层(SSL)连接到DB集群

票数 1
EN

Stack Overflow用户

发布于 2019-04-10 19:56:10

我可以确认RDS Aurora MySQL (Serverless)最终支持到集群的SSL/TLS连接。但是,需要一个与MySQL 8.0兼容的客户机(即使底层DB仅为MySQL 5.6.10a,集群代理需要一个8.0客户机来支持SSL )。

https://aws.amazon.com/premiumsupport/knowledge-center/rds-error-2026-ssl-connection/

(从页面:)

错误2026 (HY000):SSL连接错误: SSL_CTX_set_default_verify_paths失败或错误2026 (HY000):SSL连接错误:SSL:其他签名确认错误 如果证书标识符(证书文件名)不正确,则可以接收此错误。如果MySQL客户端不支持证书标识符,例如使用Aurora,也可以收到此错误。如果使用集群,并且使用MySQL客户端连接到,则必须使用MySQL 8.0兼容的MySQL命令。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52635204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档