在使用 C# .NET Core 3 时使用 SSL 证书连接到 MySQL 数据库

Connect to a MySQL database using SSL certificates in using C# .NET Core 3

我正在尝试使用 SSL 连接到远程 Mysql 数据库。实现是在 C# 和 dotnet core 3 中。我写了一些代码,但似乎没有成功。任何帮助,将不胜感激。谢谢你。

using System.Data;

using MySql.Data;
using MySql.Data.MySqlClient;

public class Tutorial1
{
    public static void Main()
    {
        MySqlConnection connection = new MySqlConnection( "database=your_databasename;user=your_username;" + "SslMode=VerifyFull;" + "SslCa=server-ca.pem;" + "SslCert=client-cert.pem;" +"SslKey=client-key.pem;");

        try
        {
            Console.WriteLine("Connecting to MySQL...");
            connection.Open();
            // Perform database operations
            Console.WriteLine("Connected to Dev DB");
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }
        connection.Close();
        Console.WriteLine("Done.");
    }
}

Oracle Connector/NET(又名 MySql.Data)在处理 PEM 时存在一个已知错误:bug 95436

尝试切换到 MySqlConnector (NuGet)。它具有与 Connector/NET 相同的 API,因此它应该是一个直接替代品,但具有更好的 PEM 文件处理和对 .NET Core 的更好支持。

所以,我想通了。由于某些错误,显然 Connector/Net 不适用于 .pem 证书文件。所以解决这个问题的方法是我们需要像这样将 .pem 转换为 .pfx:

openssl pkcs12 -export -in client-cert.pem -inkey client-key.pem -certfile cacert.pem -out client.pfx

这是我从 https://dev.mysql.com/doc/connector-net/en/connector-net-tutorials-ssl-pfx.html

那里得到的