【问题标题】:SSL Connection to MySQL Azure failing in Node.js application在 Node.js 应用程序中与 MySQL Azure 的 SSL 连接失败
【发布时间】:2017-05-15 12:55:11
【问题描述】:

按照微软为其新的 Azure MySQL 产品提供的所有文档,我不断收到同样的错误

Error: 140736265921472:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:../deps/openssl/openssl/ssl/s23_clnt.c:794

我已经在 Linux docker 容器上尝试过这个,以防我在 macOS 上遇到问题。

示例代码,我已尝试将其与我的应用程序隔离以确保:

var mysql = require('mysql2');

var conn = mysql.createConnection({
  host: "mydbname.mysql.database.azure.com",
  user: "user@mydbname",
  password: 'password',
  database: 'dbname',
  port: 3306,
  ssl: {
    ca: fs.readFileSync('./BaltimoreCyberTrustRoot.crt'),
  }
});

我遵循的文档:

https://docs.microsoft.com/en-us/azure/mysql/howto-configure-ssl https://docs.microsoft.com/en-us/azure/mysql/howto-connection-string

我尝试了mysqlmysql2 节点驱动程序都没有成功。有人解决了吗?

【问题讨论】:

  • 你安装了mysql2吗? npm install --save mysql2
  • 是的,我已经安装了 mysql2。
  • 我在 Windows 上遇到了完全相同的问题。节点 v6.10.3

标签: mysql azure azure-database-mysql


【解决方案1】:

感谢您报告问题。该错误已在我们的内部测试中暴露并已修复。这几天我们将部署修复程序,我们会及时通知您。同时,如果可以的话,请使用非 ssl 模式来缓解。谢谢!

-----编辑-----

您好,修复已部署。请试一试!谢谢。

【讨论】:

  • 出于好奇,正在实施的修复是什么?在 github 上讨论的 mysql lib 问题指出身份验证开关存在问题(这意味着节点无法连接或没有 SSL)。修复开关的 PR 不会修复 SSL 问题。这是因为颁发的证书不是为 mysql 数据库域设置的吗?因为我也注意到了。
  • 嗨,戴夫,这里有两个问题。一是节点客户端不支持认证切换协议;另一个是我们的服务通过 SSL 连接与节点客户端进行了回归对话。回归是由未识别能力标志引起的。感谢您的关注!
  • 嗨,我现在使用相同的代码得到 Error: unable to get local issuer certificate 以及 mysqlmysql2 最新驱动程序?
  • @sjdweb 可以试试 pem 格式的根 CA 代替 crt 吗?另一种选择是设置rejectUnauthorized: false 以尝试缓解。
  • @TwoCode 嗨,这解决了我的问题。但是在我的应用程序中几分钟后,我看到了Error: read ECONNRESET at exports._errnoException (util.js:1050:11) at TLSWrap.onread (net.js:582:26)?我在答案 cmets 的单独 Stackoverflow 上看到了这一点,但用户仍然接受了答案:stackoverflow.com/questions/44210615/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-06
  • 2019-03-09
  • 1970-01-01
  • 1970-01-01
  • 2012-03-13
  • 2019-08-03
  • 2020-06-13
相关资源
最近更新 更多