Spec-Zone.ru › MySQL Connectors 1.0

6.9 Безопасное подключение с использованием SSL

  • 6.9.1 Настройка аутентификации сервера
  • 6.9.2 Настройка аутентификации клиента
  • 6.9.3 Настройка двухсторонней аутентификации
  • 6.9.4 JSSE в режиме FIPS
  • 6.9.5 Отладка подключения SSL

Connector/J может шифровать все данные, передаваемые между драйвером JDBC и сервером (за исключением начального рукопожатия), используя SSL. Включение шифрования соединения влечёт за собой потерю производительности, степень которой зависит от множества факторов, включая (но не ограничиваясь ими) размер запроса, объём возвращаемых данных, аппаратное обеспечение сервера, используемая библиотека SSL, пропускная способность сети и так далее.

Система работает с помощью двух файлов хранилища ключей Java: один файл содержит информацию о сертификате сервера (truststore в примерах ниже), а другой — ключи и сертификат клиента (keystore в примерах ниже). Все файлы хранилища ключей Java защищены паролем, указанным в keytool при их создании. Вам потребуются имена файлов и соответствующие пароли для создания SSL-соединения.

Для работы поддержки SSL необходимо следующее:

  • Сервер MySQL, поддерживающий SSL и скомпилированный и настроенный для этого. Дополнительную информацию см. в и .

  • Подписанный сертификат клиента, если используется взаимная (двухсторонняя) аутентификация.подробнее.

По умолчанию Connector/J устанавливает защищённые соединения с серверами MySQL. Обратите внимание, что серверы MySQL 5.7 и выше, скомпилированные с OpenSSL, могут автоматически генерировать отсутствующие SSL-файлы при запуске и соответственно настраивать SSL-соединение.

Для 8.0.12 и более ранних версий: При условии правильной настройки сервера для использования SSL, нет необходимости настраивать что-либо на клиенте Connector/J для использования зашифрованных соединений (исключением является случай, когда Connector/J подключается к очень старым версиям сервера, например, 5.6.25 и ранее или 5.7.5 и ранее, в этом случае клиент должен установить свойство соединения useSSL=true, чтобы использовать зашифрованные соединения). Клиент может потребовать использования SSL, установив свойство соединения requireSSL=true; соединение затем прервётся, если сервер не настроен на использование SSL. Без requireSSL=true соединение просто вернётся к незашифрованному режиму, если сервер не настроен на использование SSL.

Для 8.0.13 и более поздних версий: При условии правильной настройки сервера для использования SSL, нет необходимости настраивать что-либо на клиенте Connector/J для использования зашифрованных соединений. Клиент может потребовать использования SSL, установив свойство соединения sslMode=REQUIRED, VERIFY_CA или VERIFY_IDENTITY; соединение затем прервётся, если сервер не настроен на использование SSL. С sslMode=PREFERRED соединение просто вернётся к незашифрованному режиму, если сервер не настроен на использование SSL. Для соединений X-Protocol свойство соединения xdevapi.ssl-mode указывает настройку режима SSL, так же как sslMode для соединений MySQL-протокола (за исключением того, что PREFERRED не поддерживается протоколом X); если не задано явно, то xdevapi.ssl-mode принимает значение sslMode (если xdevapi.ssl-mode не указано, и sslMode установлено в PREFERRED, то xdevapi.ssl-mode установлено в REQUIRED).

Для повышения безопасности можно настроить клиента на одностороннюю (серверную или клиентскую) или двухстороннюю (серверную и клиентскую) аутентификацию SSL, позволяя клиенту или серверу проверять подлинность друг друга.

Версии TLS: Допустимые версии протокола TLS могут быть ограничены с помощью свойств подключения tlsVersions и, для соединений X DevAPI и для релизов 8.0.19 и выше, xdevapi.tls-versions (если xdevapi.tls-versions не указано, оно принимает значение tlsVersions). Если такие ограничения не заданы, Connector/J пытается подключиться к серверу с использованием TLSv1.2 и TLSv1.3.

Примечания
  • С Connector/J 8.0.28, свойство подключения enabledTLSProtocols было переименовано в tlsVersions, а enabledSSLCipherSuites — в tlsCiphersuites; оригинальные имена остаются псевдонимами.

  • Для Connector/J 8.0.26 и более поздних версий: TLSv1 и TLSv1.1 были устаревшими в Connector/J 8.0.26 и удалены в релизе 8.0.28; удалённые значения считаются недопустимыми для использования с параметрами подключения и настройками сессий. Подключения могут осуществляться с использованием более безопасных протоколов TLSv1.2 и TLSv1.3. Для использования TLSv1.3 необходимо, чтобы сервер был скомпилирован с OpenSSL 1.1.1 или выше, а Connector/J запускался с JVM, поддерживающей TLSv1.3 (например, Oracle Java 8u261 и выше).

  • Для Connector/J 8.0.18 и более ранних версий при подключении к MySQL Community Server 5.6 и 5.7 с помощью JDBC API: Из-за проблем совместимости с MySQL Server, скомпилированным с yaSSL, Connector/J по умолчанию не включает подключения с TLSv1.2 и выше. При подключении к серверам, которые ограничивают подключения, использующие эти более высокие версии TLS, включите их явно, задав свойство подключения Connector/J enabledTLSProtocols (например, установите enabledTLSProtocols=TLSv1.2,TLSv1.3).

Наборы шифров: С выпуска 8.0.19 наборы шифров, используемые Connector/J, предварительно ограничены файлом свойств, который можно найти в src/main/resources/com/mysql/cj/TlsSettings.properties в папке src в дереве исходных кодов или в архивном дистрибутиве, независимом от платформы (в формате .tar.gz или .zip) для Connector/J. Файл содержит четыре раздела, в каждом из которых перечислены обязательные, разрешённые, устаревшие и недопустимые шифры. Можно использовать только наборы, перечисленные в первых трёх разделах. Последний раздел (недопустимые) определяет шаблоны или маски, которые блокируют небезопасные наборы шифров. Практически, учитывая уже предоставленный список разрешённых шифров в первых трёх разделах, шаблоны для блокирования в четвёртом разделе избыточны; но они там как дополнительная мера предосторожности от нежелательных шифров. Список разрешённых и заблокированных наборов шифров применим как к JDBC, так и к соединениям X DevAPI.

Допустимые наборы шифров для SSL-соединений могут быть ограничены с помощью свойств подключения tlsCiphersuites и, для соединений X DevAPI и для релизов 8.0.19 и выше, xdevapi.tls-ciphersuites (если xdevapi.tls-ciphersuites не указано, оно принимает значение tlsCiphersuites). Если такие ограничения не заданы, Connector/J пытается установить SSL-соединения с любыми разрешёнными наборами шифров, которые принимает сервер.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/connector-j-en/connector-j-reference-using-ssl.html

Spec-Zone.ru

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