gpt4 book ai didi

c# - MySQL .NET SSL 访问被拒绝异常

转载 作者:行者123 更新时间:2023-11-29 09:29:21 25 4
gpt4 key购买 nike

使用 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: 'Authentication to host 's-ce.srv.rxe.pl' for user 's-ce.client' using method 'mysql_native_password' failed with message: Access denied for user 'user'@'server' (using password: YES)'

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

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

什么给出了?

更新

根据评论中的建议,我已将 PEM 文件转换为具有所选密码的单个 PFX 证书。我能够连接更新代码(仅相关更改的行):

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

最佳答案

使用 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 将客户端证书和 key 文件转换为 PFX 文件.
  2. 切换到https://www.nuget.org/packages/MySqlConnector/ ,它正确支持 PEM 文件(和 fixes many other bugs )。

关于c# - MySQL .NET SSL 访问被拒绝异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59027497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com