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

C# MySQL.NET SSL访问被拒绝异常,c#,mysql,.net,C#,Mysql,.net,使用MySQL连接器版本8.0.18,我尝试使用SSL证书连接到数据库 我无法执行此操作,因为此代码: MySqlConnectionStringBuilder builder=new MySqlConnectionStringBuilder(); builder.Server=“Server”; builder.Port=3307; builder.Database=“Database”; builder.UserID=“用户”; builder.Password=“*************

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

我无法执行此操作,因为此代码:

MySqlConnectionStringBuilder builder=new MySqlConnectionStringBuilder();
builder.Server=“Server”;
builder.Port=3307;
builder.Database=“Database”;
builder.UserID=“用户”;
builder.Password=“*************”;
builder.SslMode=MySqlSslMode.Required;
builder.SslCa=“ca.pem”;
builder.SslCert=“client-cert.pem”;
builder.SslKey=“client key.pem”;
MySqlConnection conn=新的MySqlConnection(builder.ToString());
conn.Open();
引发以下异常:

MySql.Data.MySqlClient.MySqlException:“使用方法'MySql_native_password'对用户's-ce.client'的主机's-ce.srv.rxe.pl'的身份验证失败,消息为:用户'user'@'服务器的访问被拒绝(使用密码:YES)”

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

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

有什么好处

更新

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


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

有两种解决办法:

  • 使用
    openssl pkcs12-export-in-client-cert.pem-inkey client-key.pem-certfile ca.pem-out client.PFX将客户端证书和密钥文件转换为PFX文件
  • 切换到,它正确支持PEM文件(和)

  • 它不依赖于SSL,因为它表示身份验证失败。您已从MySQL Workbench登录,您是从与MySQL实例相同的服务器上执行此操作的吗?@Fourat Workbench和.NET应用程序是从同一台电脑上运行的。数据库服务器位于另一台电脑上。@rob_tokarski您确定您的SSL证书路径正确吗?您是否已将证书密码添加到MySqlConnectionStringBuilder
    ?在使用所选密码将pem文件转换为pfx后检查此项,似乎我能够在应用程序中连接到数据库(连接状态为打开)。路径和pem文件相同(文件名明显不同),所以MySql连接器似乎不支持pem?
    builder.SslMode = MySqlSslMode.Required;
    builder.CertificateFile = "client-cert.pfx";
    builder.CertificatePassword = "************";
    MySqlConnection conn = new MySqlConnection(builder.ToString());