Spec-Zone .ru
спецификации, руководства, описания, API

21.2.4.7. Учебное руководство: Используя SSL с MySQL, Connector/Net

В этом учебном руководстве Вы изучите, как можно использовать MySQL, Connector/Net, чтобы соединиться с сервером MySQL, сконфигурированным, чтобы использовать SSL. Поддержка клиентских сертификатов SSL была добавлена с MySQL, Connector/Net 6.2.

MySQL Server использует формат PEM для сертификатов и закрытых ключей. Это учебное руководство будет использовать свидетельства об испытании от тестового комплекта сервера посредством примера. Можно получить исходный код MySQL Server из MySQL Downloads. Сертификаты могут быть найдены в каталоге ./mysql-test/std_data.

Чтобы выполнить шаги в этом учебном руководстве, у Вас должен быть Открытый установленный SSL. Это может быть загружено для Microsoft Windows бесплатно от Shining Light Productions.

Более подробная информация об опциях строки подключения, используемых в этом учебном руководстве, может быть найдена в Разделе 21.2.6, "Ссылка Опций Строки подключения Соединителя/Сети".

Конфигурирование MySQL Server, чтобы использовать SSL

  1. В конфигурационном файле MySQL Server, установленном параметры SSL следующим образом:

    ssl-ca=path/to/repo/mysql-test/std_data/cacert.pem ssl-cert=path/to/repo/mysql-test/std_data/server-cert.pem ssl-key=path/to/repo/mysql-test/std_data/server-key.pem 

    Скорректируйте каталоги согласно расположению, в котором Вы устанавливали исходный код MySQL.

  2. В этом шаге Вы создаете тестового пользователя и устанавливаете пользователя, чтобы потребовать SSL.

    Используя MySQL Command-Line Client, соединитесь как root и создайте пользователя sslclient.

  3. Чтобы установить полномочия и требования, дайте следующую команду:

    GRANT ALL PRIVILEGES ON *.* TO sslclient@'%' REQUIRE SSL;

Создание файла сертификата, чтобы использовать с клиентом.NET

  1. Клиент.NET не использует формат файла PEM, поскольку.NET не поддерживает этот формат исходно. Вы будете использовать тестовые клиентские сертификаты от того же самого репозитария сервера в целях этого примера. Преобразуйте они к PFX форматируют сначала. Этот формат также известен как PKCS#12. Статья, описывающая эту процедуру, может быть найдена в веб-сайте Citrix. Из каталога server-repository-root/mysql-test/std_data, дайте следующую команду:

    openssl pkcs12 -export -in client-cert.pem -inkey client-key.pem -certfile cacert.pem -out client.pfx
  2. Когда спрошено пароль экспорта, введите пароль "передача". Файл client.pfx будет сгенерирован. Этот файл используется в остатке от учебного руководства.

Соединение с сервером, используя основанный на файле сертификат

  1. Вы будете использовать файл PFX, client.pfx Вы создали в предыдущем шаге, чтобы аутентифицировать клиент. Следующий пример демонстрирует, как соединить использование SSL Mode, CertificateFile и CertificatePassword опции строки подключения:

    using (MySqlConnection connection = new MySqlConnection(   "database=test;user=sslclient;" +    "CertificateFile=H:\\bzr\\mysql-trunk\\mysql-test\\std_data\\client.pfx" +    "CertificatePassword=pass;" +   "SSL Mode=Required ")) {     connection.Open(); }

    Путь к файлу сертификата должен будет быть изменен, чтобы отразить Вашу отдельную установку.

Соединение с сервером, используя основанный на хранилище сертификат

  1. Первый шаг должен импортировать файл PFX, client.pfx, в Персональное Хранилище. Двойной щелчок файл в Windows explorer. Это запускает Мастер Импорта Сертификата.

  2. Следуйте за шагами, продиктованными мастером, и когда запрошено пароль для файла PFX, введите "передачу".

  3. Щелкните по Finish, чтобы закрыть мастер и импортировать сертификат в персональное хранилище.

Исследуйте сертификаты в Персональном Хранилище

  1. Запустите Microsoft Management Console, входя mmc.exe в командной строке.

  2. Выберите Файл, Добавьте/Удалите хватку - в. Щелкните по Add. Выберите Сертификаты из списка доступной хватки-ins в диалоговом окне.

  3. Нажмите кнопку Add в диалоговом окне, и установите Мой переключатель учетной записи пользователя. Это используется для персональных сертификатов.

  4. Нажмите кнопку Finish.

  5. Нажмите OK, чтобы закрыть Добавить/Удалить Хватку - в диалоговом окне.

  6. У Вас теперь будут Сертификаты – Текущий Пользователь выведенный на экран в левой панели Microsoft Management Console. Разверните Сертификаты - Текущий Пользовательский элемент дерева и выберите Персональный, Сертификаты. Правая панель выведет на экран сертификат, выпущенный к MySQL. Это - сертификат, который был ранее импортирован. Двойной щелчок сертификат, чтобы вывести на экран его детали.

  7. После того, как Вы импортировали сертификат Персональному Хранилищу, можно использовать больше succint строки подключения, чтобы соединиться с базой данных, как иллюстрировано следующим кодом:

    using (MySqlConnection connection = new MySqlConnection(    "database=test;user=sslclient;" +     "Certificate Store Location=CurrentUser;" +     "SSL Mode=Required")) {    connection.Open(); }

Параметр Следа большого пальца сертификата

Если у Вас есть большое количество сертификатов в Вашем хранилище, и у многих есть тот же самый Выпускающий, это может быть источником беспорядка и привести к неправильному используемому сертификату. Чтобы облегчить эту ситуацию, есть дополнительный параметр Следа большого пальца Сертификата, который может дополнительно быть определен как часть строки подключения. Как упомянуто прежде, Вы можете двойной щелчок сертификат в Microsoft Management Console, чтобы вывести на экран детали сертификата. Когда диалоговое окно Сертификата выводится на экран, щелкают по вкладке Details и прокручивают вниз, чтобы видеть след большого пальца. След большого пальца обычно будет числом такой как ‎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(); }

Пробелы в параметре следа большого пальца являются дополнительными, и значение является нечувствительным к регистру.