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