8.3.3.1 Создание сертификатов SSL и RSA и ключей с использованием MySQL
MySQL предоставляет способы создания файлов сертификата и ключа SSL, а также файлов пар ключей RSA, необходимых для поддержки зашифрованных соединений с использованием SSL и безопасного обмена паролями с использованием RSA по незащищенным соединениям, если эти файлы отсутствуют:
Сервер может автоматически генерировать эти файлы при запуске для дистрибутивов MySQL.
Автоматическое генерирование сервером помогает снизить барьер к использованию SSL, сделав создание необходимых файлов проще. Однако сертификаты, сгенерированные этим методом, являются самоподписанными, что может быть недостаточно безопасным. После приобретения опыта с ними, рассмотрите возможность получения сертификатов и ключей от зарегистрированного сертификационного центра.
Если клиент, подключающийся к экземпляру сервера MySQL, использует SSL-сертификат с расширением extendedKeyUsage (расширение X.509 v3), расширенное использование ключа должно включать проверку подлинности клиента (clientAuth). Если SSL-сертификат указан только для проверки подлинности сервера (serverAuth) и других целей, не связанных с сертификатами клиента, проверка сертификата завершается неудачей, и соединение клиента с экземпляром сервера MySQL прерывается. В SSL-сертификатах, сгенерированных MySQL Server, нет расширения extendedKeyUsage. Если вы используете свой собственный сертификат клиента, созданный другим способом, убедитесь, что любое расширение extendedKeyUsage включает проверку подлинности клиента.
Автоматическое создание файлов SSL и RSA
Для дистрибутивов MySQL, скомпилированных с использованием OpenSSL, сервер MySQL способен автоматически генерировать отсутствующие файлы SSL и RSA при запуске. Системные переменные auto_generate_certs, sha256_password_auto_generate_rsa_keys и caching_sha2_password_auto_generate_rsa_keys управляют автоматическим созданием этих файлов. Эти переменные включены по умолчанию. Их можно включить при запуске и проверить, но не задавать во время выполнения.
При запуске сервер автоматически генерирует файлы SSL-сертификата и ключа серверной и клиентской стороны в каталоге данных, если переменная auto_generate_certs включена, не указаны параметры SSL и файлы SSL серверной стороны отсутствуют в каталоге данных. Эти файлы позволяют использовать зашифрованные клиентские подключения с помощью SSL; см. Раздел 8.3.1, «Настройка MySQL для использования зашифрованных соединений».
-
Сервер проверяет каталог данных на наличие файлов SSL с указанными именами:
ca.pem server-cert.pem server-key.pem
-
Если любой из этих файлов присутствует, сервер не создаёт файлы SSL. В противном случае он создаёт их, а также некоторые дополнительные файлы:
ca.pem Self-signed CA certificate ca-key.pem CA private key server-cert.pem Server certificate server-key.pem Server private key client-cert.pem Client certificate client-key.pem Client private key
Если сервер автоматически генерирует файлы SSL, он использует имена файлов
ca.pem,server-cert.pemиserver-key.pemдля установки соответствующих системных переменных (ssl_ca,ssl_cert,ssl_key).
При запуске сервер автоматически генерирует файлы пары открытых/закрытых ключей RSA в каталоге данных, если все эти условия истинны: переменная sha256_password_auto_generate_rsa_keys или caching_sha2_password_auto_generate_rsa_keys включена; не указаны параметры RSA; файлы RSA отсутствуют в каталоге данных. Эти пары ключей обеспечивают безопасный обмен паролями с использованием RSA по незащищенным соединениям для учетных записей, аутентифицированных плагином sha256_password (устаревший) или caching_sha2_password; см. Раздел 8.4.1.2, «Аутентификация с плагином SHA-256» и Раздел 8.4.1.1, «Аутентификация с кэшированием плагина SHA-2».
-
Сервер проверяет каталог данных на наличие файлов RSA с указанными именами:
private_key.pem Private member of private/public key pair public_key.pem Public member of private/public key pair
Если любой из этих файлов присутствует, сервер не создаёт файлы RSA. В противном случае он создаёт их.
Если сервер автоматически генерирует файлы RSA, он использует их имена для установки соответствующих системных переменных (
sha256_password_private_key_pathиsha256_password_public_key_path;caching_sha2_password_private_key_pathиcaching_sha2_password_public_key_path).
Характеристики файлов SSL и RSA
Автоматически созданные сервером файлы SSL и RSA имеют следующие характеристики:
Ключи SSL и RSA имеют размер 2048 бит.
Сертификат SSL CA является самоподписанным.
Серверный и клиентский сертификаты SSL подписаны сертификатом и ключом CA с использованием алгоритма подписи
sha256WithRSAEncryption.-
SSL-сертификаты используют следующие значения общего имени (CN) с соответствующим типом сертификата (CA, сервер, клиент):
ca.pem: MySQL_Server_
suffix_Auto_Generated_CA_Certificate server-cert.pm: MySQL_Server_suffix_Auto_Generated_Server_Certificate client-cert.pm: MySQL_Server_suffix_Auto_Generated_Client_CertificateЗначение
suffixосновано на номере версии MySQL.Для файлов, сгенерированных сервером, если полученные значения CN превышают 64 символа, часть имени
_опускается.suffix В файлах SSL пустые значения для страны (C), штата или провинции (ST), организации (O), имени подразделения организации (OU) и адреса электронной почты.
Файлы SSL, созданные сервером, действительны в течение десяти лет с момента создания.
Файлы RSA не истекают.
У файлов SSL разные серийные номера для каждой пары сертификат/ключ (1 для CA, 2 для сервера, 3 для клиента).
Файлы, автоматически созданные сервером, принадлежат учетной записи, под которой работает сервер.
В системах Unix и подобных Unix, режим доступа к файлам составляет 644 для файлов сертификатов (то есть доступно всем) и 600 для файлов ключей (то есть доступно только учетной записи, под которой работает сервер).
Чтобы увидеть содержимое SSL-сертификата (например, чтобы проверить диапазон дат, в течение которых он действителен), вызовите openssl напрямую:
openssl x509 -text -in ca.pem
openssl x509 -text -in server-cert.pem
openssl x509 -text -in client-cert.pem
Также можно проверить информацию о сроке действия SSL-сертификата с помощью этого SQL-запроса:
mysql> SHOW STATUS LIKE 'Ssl_server_not%';
+-----------------------+--------------------------+
| Variable_name | Value |
+-----------------------+--------------------------+
| Ssl_server_not_after | Apr 28 14:16:39 2027 GMT |
| Ssl_server_not_before | May 1 14:16:39 2017 GMT |
+-----------------------+--------------------------+
© 2025 Oracle
Licensed under the GPLv2 License.