.NET 不提供对 PEM 格式的原生支持。相反,Windows 包含一个证书存储,提供 PFX 格式的平台依赖证书。在本示例中,使用来自 MySQL 服务器存储库的测试客户端证书 (./mysql-test/std_data
)。首先将它们转换为 PFX 格式。此格式也称为 PKCS#12。
要完成本教程中有关 PFX 证书的步骤,您必须安装 Open SSL。可以从 Shining Light Productions 免费下载适用于 Microsoft Windows 的 Open SSL。
在目录
中,发出以下命令。server-repository-root
/mysql-test/std_dataopenssl pkcs12 -export -in client-cert.pem -inkey client-key.pem -certfile cacert.pem -out client.pfx
当系统要求输入导出密码时,请输入密码 “pass”。系统将生成文件
client.pfx
。本教程的其余部分将使用此文件。
使用您在上一步中创建的
client.pfx
文件对客户端进行身份验证。以下示例演示如何使用SslMode
、CertificateFile
和CertificatePassword
连接字符串选项进行连接。using (MySqlConnection connection = new MySqlConnection( "database=test;user=sslclient;" + "CertificateFile=H:\\git\\mysql-trunk\\mysql-test\\std_data\\client.pfx;" + "CertificatePassword=pass;" + "SslMode=Required ")) { connection.Open(); }
需要更改证书文件的路径以反映您的个人安装。使用 PFX 格式证书时,
SslMode
连接选项会验证所有 SSL 模式值的证书,但Disabled
或None
(在 Connector/NET 8.0.29 中已弃用)除外。
第一步是将 PFX 文件
client.pfx
导入个人存储。在 Windows 资源管理器中双击该文件。这将启动证书导入向导。按照向导指示的步骤操作,并在系统提示输入 PFX 文件的密码时,输入 “pass”。
单击
关闭向导并将证书导入个人存储。
通过在命令提示符下输入
mmc.exe
启动 Microsoft 管理控制台。从 证书。
菜单中选择 。单击 。从可用管理单元列表中选择在对话框中,单击 我的用户帐户 选项。此选项用于个人证书。
,然后选择单击
。单击
关闭“添加/删除管理单元”对话框。现在,您会在 Microsoft 管理控制台的左侧面板中看到 证书 - 当前用户。展开“证书 - 当前用户”树项目,然后选择 个人、证书。右侧面板显示之前导入的颁发给 MySQL 的证书。双击证书以显示其详细信息。
将证书导入个人存储后,您可以使用更简洁的连接字符串连接到数据库,如下面的代码所示
using (MySqlConnection connection = new MySqlConnection( "database=test;user=sslclient;" + "Certificate Store Location=CurrentUser;" + "SslMode=Required")) { connection.Open(); }
如果您的存储中有大量证书,并且许多证书具有相同的颁发者,这可能会导致混淆,并导致使用错误的证书。为了缓解这种情况,可以另外指定一个可选的证书指纹参数作为连接字符串的一部分。如前所述,您可以在 Microsoft 管理控制台中双击证书以显示证书的详细信息。显示“证书”对话框后,单击 详细信息 选项卡并向下滚动以查看指纹。指纹通常是一个数字,例如 47 94 36 00 9a 40 f3 01 7a 14 5c f8 47 9e 76 94 d7 aa de f0
。此指纹可以在连接字符串中使用,如下面的代码所示
using (MySqlConnection connection = new MySqlConnection(
"database=test;user=sslclient;" +
"Certificate Store Location=CurrentUser;" +
"Certificate Thumbprint=479436009a40f3017a145cf8479e7694d7aadef0;"+
"SSL Mode=Required"))
{
connection.Open();
}
指纹参数中的空格是可选的,并且该值不区分大小写。