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.36, “mysql_get_ssl_cipher()”.

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

  • Вынужденное использование защищённого соединения

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

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

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

  • MYSQL_OPT_SSL_CA: Имя файла сертификата Центра сертификации (CA). Если используется, этот параметр должен указывать тот же сертификат, что и сервер.

  • MYSQL_OPT_SSL_CAPATH: Имя каталога, содержащего файлы сертификатов доверенных центров сертификации SSL.

  • MYSQL_OPT_SSL_CERT: Имя файла сертификата открытого ключа клиента.

  • MYSQL_OPT_SSL_CIPHER: Список шифров шифрования, разрешенных клиентом для соединений, использующих протоколы TLS до TLSv1.2.

  • MYSQL_OPT_SSL_CRL: Имя файла, содержащего списки отзыва сертификатов.

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

  • MYSQL_OPT_SSL_KEY: Имя файла закрытого ключа клиента.

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

  • MYSQL_OPT_SSL_SESSION_DATA: Сериализованные данные сессии из защищённого соединения, возвращённые функцией mysql_get_ssl_session_data() во время активности соединения.

  • MYSQL_OPT_TLS_CIPHERSUITES: Список наборов шифрования шифрования, разрешенных клиентом для соединений, использующих TLSv1.3.

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

Устаревшая функция mysql_ssl_set() может быть использована в качестве удобной процедуры, эквивалентной набору вызовов mysql_options(), которые задают файлы сертификата и ключа, шифры шифрования и т.д. См. Раздел 5.4.82, “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-8.0-en/c-api-encrypted-connections.html

Spec-Zone.ru

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