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, используются для установления шифрованного подключения, если такие подключения доступны, но не требуют, чтобы полученное подключение было шифрованным. Чтобы потребовать шифрованное подключение, используйте следующий метод:
Вызовите
mysql_options()по мере необходимости, чтобы указать соответствующие параметры SSL (файлы сертификата и ключа, шифры шифрования и т.д.).Вызовите
mysql_options()для передачи параметраMYSQL_OPT_SSL_MODEсо значениемSSL_MODE_REQUIREDили одним из более строгих значений параметров.Вызовите
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.