6.7.2 Использование сертификатов PFX в Connector/NET
.NET не предоставляет родной поддержки формата PEM. Вместо этого Windows включает хранилище сертификатов, предоставляющее платформозависимые сертификаты в формате PFX. В целях этого примера используйте тестовые клиентские сертификаты из репозитория сервера MySQL (./mysql-test/std_data). Сначала преобразуйте их в формат PFX. Этот формат также известен как PKCS#12.
Для выполнения шагов этого учебника по сертификатам PFX вам необходимо установить Open SSL. Его можно бесплатно загрузить для Microsoft Windows на сайте Shining Light Productions.
Создание файла сертификата для использования с клиентом .NET
-
Из каталога
выполните следующую команду.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”.
Нажмите , чтобы закрыть мастер и импортировать сертификат в личное хранилище.
Просмотр сертификатов в личном хранилище
Запустите консоль управления Microsoft, введя
mmc.exeв командной строке.Выберите из меню . Нажмите . Выберите Сертификаты из списка доступных оснасток.
В диалоговом окне нажмите , а затем выберите вариант Моя учетная запись пользователя. Этот параметр используется для личных сертификатов.
Нажмите .
Нажмите , чтобы закрыть диалоговое окно «Добавить/Удалить оснастки».
Теперь в левой панели консоли управления 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();
}
Пробелы в параметре отпечатка необязательны, а значение не чувствительно к регистру.
© 2025 Oracle
Licensed under the GPLv2 License.