【问题标题】:MySQL .NET SSL access denied exceptionMySQL .NET SSL 访问被拒绝异常
【发布时间】:2020-03-20 11:44:03
【问题描述】:

使用 MySQL 连接器版本 8.0.18 我正在尝试使用 SSL 证书连接到数据库。

我无法这样做,因为这段代码:

MySqlConnectionStringBuilder builder = new MySqlConnectionStringBuilder();
builder.Server = "server";
builder.Port = 3307;
builder.Database = "databse";
builder.UserID = "user";
builder.Password = "************";
builder.SslMode = MySqlSslMode.Required;
builder.SslCa = "ca.pem";
builder.SslCert = "client-cert.pem";
builder.SslKey = "client-key.pem";
MySqlConnection conn = new MySqlConnection(builder.ToString());
conn.Open();

抛出以下异常:

MySql.Data.MySqlClient.MySqlException:使用方法“mysql_native_password”对用户“s-ce.client”的主机“s-ce.srv.rxe.pl”进行身份验证失败,并显示消息:用户“用户的访问被拒绝” '@'server'(使用密码:YES)'

我已将文件 ca.pem、client-cert.pem 和 client-key.pem 放在 app 可执行文件所在的同一目录中。

使用 MySQL Workbench,我能够在同一台 PC 上使用相同的参数和 pem 文件连接到该数据库。

什么给了?

更新

按照 cmets 的建议,我已将 PEM 文件转换为带有选择密码的单个 PFX 证书。我能够连接更新代码(仅相关的更改行):

builder.SslMode = MySqlSslMode.Required;
builder.CertificateFile = "client-cert.pfx";
builder.CertificatePassword = "************";
MySqlConnection conn = new MySqlConnection(builder.ToString());

【问题讨论】:

  • 它不依赖于 SSL ,因为它说它没有通过身份验证。
  • 您是从 MySQL Workbench 登录的,您是从与您的 MySQL 实例相同的服务器上登录的吗?
  • @Fourat Workbench 和 .NET 应用程序在同一台 PC 上运行。数据库服务器在另一台 PC 上。
  • @rob_tokarski 您确定您的 SSL 证书路径正确吗?您是否已将证书密码添加到 MySqlConnectionStringBuilder ?检查这个stackoverflow.com/questions/39031412/…
  • 使用选择的密码将 pem 文件转换为 pfx 后,我似乎能够在应用程序中连接到数据库(连接状态为打开)。路径与 pem 文件相同(文件名明显不同),所以 MySql 连接器似乎并不真正支持 pem?

标签: c# mysql .net


【解决方案1】:

使用 PEM 文件进行相互身份验证不适用于 Connector/NET (MySql.Data);这是一个已知的错误:bug 97738

有两种解决方法:

  1. 使用 openssl pkcs12 -export -in client-cert.pem -inkey client-key.pem -certfile ca.pem -out client.pfx 将客户端证书和密钥文件转换为 PFX 文件。
  2. 切换到 https://www.nuget.org/packages/MySqlConnector/,它确实支持 PEM 文件(和 fixes many other bugs)。

【讨论】:

    猜你喜欢
    • 2012-05-19
    • 2014-11-19
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 1970-01-01
    相关资源
    最近更新 更多