Spec-Zone.ru › MySQL 5.7

6.3 Использование защищенных соединений

  • 6.3.1 Настройка MySQL для использования защищенных соединений
  • 6.3.2 Протоколы и шифры TLS защищенных соединений
  • 6.3.3 Создание сертификатов и ключей SSL и RSA
  • 6.3.4 Возможности, зависящие от библиотек SSL
  • 6.3.5 Подключение к MySQL удаленно из Windows с помощью SSH

При незащищенном соединении между клиентом MySQL и сервером любой, имеющий доступ к сети, может просматривать весь ваш трафик и просматривать данные, отправляемые или получаемые между клиентом и сервером.

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

MySQL поддерживает защищенные соединения между клиентами и сервером с использованием протокола TLS (Transport Layer Security). TLS иногда называют SSL (Secure Sockets Layer), но MySQL на самом деле не использует протокол SSL для защищенных соединений, поскольку его шифрование слабое (см. Раздел 6.3.2, «Протоколы и шифры TLS защищенных соединений»).

TLS использует алгоритмы шифрования для обеспечения того, что данные, полученные по общедоступной сети, можно доверять. Он имеет механизмы для обнаружения изменений, потерь или повторного воспроизведения данных. TLS также включает алгоритмы, которые обеспечивают проверку подлинности с использованием стандарта X.509.

X.509 позволяет идентифицировать человека в Интернете. В общих чертах, должен быть какой-то субъект, называемый «Центром сертификации» (или ЦС), который выдает электронные сертификаты всем, кто в них нуждается. Сертификаты полагаются на асимметричные алгоритмы шифрования, имеющие два ключа шифрования (открытый ключ и закрытый ключ). Владелец сертификата может представить сертификат другой стороне в качестве доказательства своей личности. Сертификат содержит открытый ключ его владельца. Любые данные, зашифрованные с помощью этого открытого ключа, можно расшифровать только с помощью соответствующего закрытого ключа, который хранится у владельца сертификата.

MySQL может быть скомпилирован для поддержки защищенных соединений с использованием OpenSSL или yaSSL. Для сравнения двух пакетов см. Раздел 6.3.4, «Возможности, зависящие от библиотек SSL». Сведения о протоколах и шифрах шифрования, поддерживаемых каждым пакетом, см. в Разделе 6.3.2, «Протоколы и шифры TLS защищенных соединений».

Примечание

MySQL можно скомпилировать с использованием yaSSL в качестве альтернативы OpenSSL только до MySQL 5.7.28. Начиная с MySQL 5.7.28, поддержка yaSSL удалена, и все сборки MySQL используют OpenSSL.

По умолчанию программы MySQL пытаются подключиться с использованием шифрования, если сервер поддерживает защищенные соединения, возвращаясь к незащищенному соединению, если защищенное соединение не может быть установлено. Сведения об опциях, влияющих на использование защищенных соединений, см. в Разделе 6.3.1, «Настройка MySQL для использования защищенных соединений» и Параметрах командной строки для защищенных соединений.

MySQL выполняет шифрование на основе каждого соединения, и использование шифрования для данного пользователя может быть необязательным или обязательным. Это позволяет выбирать защищенное или незащищенное соединение в зависимости от требований отдельных приложений. Сведения о том, как потребовать от пользователей использования защищенных соединений, см. в обсуждении пункта REQUIRE в CREATE USER операторе в Разделе 13.7.1.2, «Оператор CREATE USER». См. также описание системной переменной require_secure_transport в Разделе 5.1.7, «Системные переменные сервера».

Защищенные соединения могут использоваться между серверами источника и реплики. См. Раздел 16.3.8, «Настройка репликации для использования защищенных соединений».

Сведения об использовании защищенных соединений из API MySQL C см.

Также можно подключиться с использованием шифрования из соединения SSH с хостом сервера MySQL. Пример см. в Разделе 6.3.5, «Подключение к MySQL удаленно из Windows с помощью SSH».

В MySQL 5.7 были внесены несколько улучшений в поддержку защищенных соединений. Следующая временная шкала обобщает изменения:

  • 5.7.3: На стороне клиента явный параметр --ssl больше не рекомендательный, а обязательный. При наличии на сервере возможности поддержки зашифрованных соединений, программа-клиент может потребовать зашифрованное соединение, указав только параметр --ssl. (Ранее клиенту необходимо было указать либо параметр --ssl-ca, либо все три параметра --ssl-ca, --ssl-key и --ssl-cert.) Попытка подключения завершается ошибкой, если зашифрованное соединение невозможно установить. Другие --ssl-xxx параметры на стороне клиента носят рекомендательный характер в отсутствие --ssl: клиент пытается подключиться с шифрованием, но переходит к незашифрованному соединению, если зашифрованное установить не удается.

  • 5.7.5: Значение параметра --ssl на стороне сервера включено по умолчанию.

    Для серверов, скомпилированных с использованием OpenSSL, доступны системные переменные auto_generate_certs и sha256_password_auto_generate_rsa_keys для автоматической генерации и обнаружения файлов сертификата и ключа SSL/RSA при запуске. Для автоматического обнаружения сертификата и ключа, если --ssl включено, и другие --ssl-xxx параметры не заданы для явного конфигурирования зашифрованных соединений, сервер пытается автоматически включить поддержку зашифрованных соединений при запуске, если обнаружит необходимые файлы сертификата и ключа в каталоге данных.

  • 5.7.6: Утилита mysql_ssl_rsa_setup доступна для облегчения ручного создания файлов сертификата и ключа SSL/RSA. Автообнаружение файлов SSL/RSA при запуске расширено для применения ко всем серверам, скомпилированным как с использованием OpenSSL, так и yaSSL. (Это означает, что auto_generate_certs не нужно включать для автоматического обнаружения.)

    Если сервер обнаружит при запуске, что сертификат CA самозаверяемый, он запишет предупреждение в журнал ошибок. (Сертификат является самозаверяемым, если он был сгенерирован автоматически сервером или вручную с помощью mysql_ssl_rsa_setup.)

  • 5.7.7: Библиотека C-клиента по умолчанию пытается установить зашифрованное соединение, если сервер поддерживает зашифрованные соединения. Это влияет на программы-клиенты следующим образом:

    • В отсутствие параметра --ssl клиенты пытаются подключиться с использованием шифрования, переходя к незашифрованному соединению, если зашифрованное невозможно установить.

    • Наличие явного параметра --ssl или его синонима (--ssl=1, --enable-ssl) является обязательным: клиенты требуют зашифрованного соединения и прекращают работу, если его невозможно установить.

    • С параметром --ssl=0 или его синонимом (--skip-ssl, --disable-ssl) клиенты используют незашифрованное соединение.

    Это изменение также влияет на последующие версии MySQL Connectors, основанные на C-библиотеке: Connector/C++ и Connector/ODBC.

  • 5.7.8: Системная переменная require_secure_transport доступна для управления требованием использования защищенного транспорта при подключении клиентов к серверу.

  • 5.7.10: Поддержка протокола TLS расширена от TLSv1 до включения TLSv1.1 и TLSv1.2. Системная переменная tls_version на стороне сервера и параметр --tls-version на стороне клиента позволяют выбрать уровень поддержки. См. Раздел 6.3.2, «Протоколы и шифры TLS зашифрованного соединения».

  • 5.7.11: Программы-клиенты MySQL поддерживают параметр --ssl-mode, который позволяет указать состояние безопасности соединения с сервером. Параметр --ssl-mode включает возможности параметров --ssl и --ssl-verify-server-cert со стороны клиента. Следовательно, параметры --ssl и --ssl-verify-server-cert устарели и удалены в MySQL 8.0.

  • 5.7.28: Поддержка yaSSL удалена. Все сборки MySQL используют OpenSSL.

  • 5.7.35: Протоколы TLSv1 и TLSv1.1 устарели.

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

Spec-Zone.ru

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