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: Путь к файлу сертификата Удостоверяющего центра (УЦ). Если этот параметр используется, он должен указывать на тот же сертификат, что и сервер.

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

  • 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 8.2 и более ранние версии предоставляли функцию mysql_ssl_set(), которая была удалена. Вместо этого используйте mysql_options() для указания файлов сертификатов и ключей, шифров шифрования и т.д.

Принудительное использование шифрованного подключения

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

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

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

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

Улучшение безопасности шифрованных подключений

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

  • Для указания сертификата УЦ вызовите 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 (см. ). Такие самоподписанные сертификаты не содержат имени сервера в качестве значения Common Name.

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

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

Spec-Zone.ru

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