Spec-Zone.ru › MySQL Connectors 1.0

3.6.1 Поддержка защищённых соединений

В этом разделе описывается, как C-приложения используют возможности C API для защищённых соединений. По умолчанию программы MySQL пытаются подключиться с использованием шифрования, если сервер поддерживает защищённые соединения, переходя к незащищённому соединению, если защищённое создать не удаётся (см. ). Для приложений, которым требуется больший контроль над созданием защищённых соединений, чем по умолчанию, C API предоставляет следующие возможности:

  • Функция mysql_options() позволяет приложениям задать соответствующие параметры SSL/TLS перед вызовом mysql_real_connect(). Например, чтобы потребовать использование защищённого соединения, см. Принудительное использование защищённого соединения.

  • Функция mysql_get_ssl_cipher() позволяет приложениям определить, использует ли соединение шифрование после его установления. Значение NULL указывает, что шифрование не используется. Значение, отличное от NULL, указывает на защищённое соединение и называет используемый шифр шифрования. См. Раздел 5.4.34, «mysql_get_ssl_cipher()».

  • Параметры защищённых соединений

  • Принудительное использование защищённого соединения

  • Повышение безопасности защищённых соединений

Параметры защищённых соединений

mysql_options() предоставляет следующие параметры для управления использованием защищённых соединений. Подробности параметров см. в Разделе 5.4.50, «mysql_options()».

  • MYSQL_OPT_SSL_CA: Путь к файлу сертификата центра сертификации (CA). При использовании этого параметра необходимо указать тот же сертификат, что и у сервера.

  • MYSQL_OPT_SSL_CAPATH: Путь к каталогу, содержащему файлы доверенных сертификатов SSL CA.

  • MYSQL_OPT_SSL_CERT: Путь к файлу сертификата открытого ключа клиента.

  • MYSQL_OPT_SSL_CIPHER: Список разрешённых шифров для шифрования SSL.

  • MYSQL_OPT_SSL_CRL: Путь к файлу со списками отзыва сертификатов.

  • MYSQL_OPT_SSL_CRLPATH: Путь к каталогу, содержащему файлы списков отзыва сертификатов.

  • MYSQL_OPT_SSL_KEY: Путь к файлу закрытого ключа клиента.

  • MYSQL_OPT_SSL_MODE: Состояние безопасности соединения.

  • MYSQL_OPT_SSL_VERIFY_SERVER_CERT: Выполнять ли проверку идентификатора имени хоста значения имени общего наименования (Common Name) серверного сертификата.

  • MYSQL_OPT_TLS_VERSION: Протоколы шифрования, разрешённые клиенту.

mysql_ssl_set() может использоваться как удобная функция, эквивалентная набору вызовов mysql_options(), задающих файлы сертификатов и ключей, шифры шифрования и т. д. См. Раздел 5.4.75, «mysql_ssl_set()».

Принудительное использование защищённого соединения

Параметры mysql_options() для таких данных, как файлы SSL-сертификатов и ключей, используются для создания защищённого соединения, если такие соединения доступны, но не накладывают никаких требований к тому, должно ли полученное соединение быть защищённым. Чтобы потребовать защищённое соединение, используйте следующий метод:

  1. При необходимости вызовите mysql_options() для задания необходимых параметров SSL (файлы сертификатов и ключей, шифры шифрования и т. д.).

  2. Вызовите mysql_options() для передачи параметра MYSQL_OPT_SSL_MODE со значением SSL_MODE_REQUIRED или одним из более жёстких значений параметра.

  3. Вызовите mysql_real_connect() для подключения к серверу. Вызов завершается ошибкой, если защищённое соединение получить не удалось; завершите выполнение с ошибкой.

Повышение безопасности защищённых соединений

Для дополнительной безопасности по сравнению с той, что предоставляется по умолчанию, клиенты могут предоставить сертификат CA, соответствующий тому, что используется сервером, и включить проверку идентификатора имени хоста. Таким образом, сервер и клиент доверяют одному сертификату CA, и клиент проверяет, что хост, к которому он подключился, является тем, который был предназначен:

  • Для указания сертификата CA вызовите mysql_options() для передачи параметра MYSQL_OPT_SSL_CA (или MYSQL_OPT_SSL_CAPATH) и вызовите mysql_options() для передачи параметра MYSQL_OPT_SSL_MODE со значением SSL_MODE_VERIFY_CA.

  • Чтобы включить проверку идентификатора имени хоста, вызовите mysql_options() для передачи параметра MYSQL_OPT_SSL_MODE со значением SSL_MODE_VERIFY_IDENTITY вместо SSL_MODE_VERIFY_CA.

Примечание

Проверка идентификатора имени хоста с помощью SSL_MODE_VERIFY_IDENTITY не работает с самозаверяющими сертификатами, созданными автоматически сервером или вручную с помощью mysql_ssl_rsa_setup (см. ). Такие самозаверяющие сертификаты не содержат имя сервера в качестве значения имени общего наименования.

Проверка идентификатора имени хоста также не работает с сертификатами, в которых имя общего наименования указано с использованием подстановочных символов, поскольку это имя сравнивается буквально с именем сервера.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/c-api-5.7-en/c-api-encrypted-connections.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API