6.3.3.1 Создание сертификатов SSL и RSA и ключей с использованием MySQL
MySQL предоставляет следующие способы создания файлов сертификата и ключа SSL, а также файлов пары ключей RSA, необходимых для поддержки шифрованных соединений с использованием SSL и безопасного обмена паролями с использованием RSA по незащищенным соединениям, если эти файлы отсутствуют:
Сервер может автоматически сгенерировать эти файлы при запуске для дистрибутивов MySQL, скомпилированных с использованием OpenSSL.
Пользователи могут вручную вызвать утилиту mysql_ssl_rsa_setup.
Для некоторых типов дистрибутивов, таких как пакеты RPM и DEB, вызов mysql_ssl_rsa_setup происходит во время инициализации каталога данных. В этом случае дистрибутив MySQL не обязательно должен быть скомпилирован с использованием OpenSSL, если доступна команда openssl.
Автоматическое создание сервером и mysql_ssl_rsa_setup снижают порог использования SSL, делая создание необходимых файлов проще. Однако сертификаты, сгенерированные этими методами, являются самоподписанными, что может быть не очень безопасным. После получения опыта работы с такими файлами, рассмотрите возможность получения сертификатов/ключей из зарегистрированного центра сертификации.
Если клиент, подключающийся к экземпляру сервера MySQL, использует SSL-сертификат с расширением extendedKeyUsage (расширение X.509 v3), расширенное использование ключа должно включать аутентификацию клиента (clientAuth). Если SSL-сертификат указан только для аутентификации сервера (serverAuth) и других целей сертификатов, отличных от клиента, проверка сертификата завершается ошибкой, и клиентское соединение с экземпляром сервера MySQL прерывается. В SSL-сертификатах, сгенерированных сервером MySQL, нет расширения extendedKeyUsage. Если вы используете свой собственный сертификат клиента, созданный другим способом, убедитесь, что любое расширение extendedKeyUsage включает аутентификацию клиента.
Автоматическое создание файлов SSL и RSA
Для дистрибутивов MySQL, скомпилированных с использованием OpenSSL, сервер MySQL может автоматически создавать недостающие файлы SSL и RSA при запуске. Переменные системы auto_generate_certs и sha256_password_auto_generate_rsa_keys управляют автоматическим созданием этих файлов. Эти переменные включены по умолчанию. Их можно включить при запуске и проверить, но не задать во время выполнения.
При запуске сервер автоматически создает файлы серверного и клиентского SSL-сертификата и ключа в каталоге данных, если переменная системы auto_generate_certs включена, не указаны никакие SSL-опции, кроме --ssl, и файлы SSL-сервера отсутствуют в каталоге данных. Эти файлы позволяют шифровать соединения клиентов с использованием SSL; см. Раздел 6.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 включена; не указаны никакие опции RSA; файлы RSA отсутствуют в каталоге данных. Эти пары ключей позволяют безопасно обмениваться паролями с использованием RSA по незащищенным соединениям для учетных записей, аутентифицированных плагином sha256_password; см. Раздел 6.4.1.5 «Плагиновая аутентификация SHA-256».
-
Сервер проверяет каталог данных на наличие файлов 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).
Вручную создание файлов SSL и RSA с использованием mysql_ssl_rsa_setup
Дистрибутивы MySQL включают утилиту mysql_ssl_rsa_setup, которую можно вызвать вручную для создания файлов SSL и RSA. Эта утилита включена во все дистрибутивы MySQL, но требует наличия команды openssl. Инструкции по использованию см. в разделе 4.4.5 «mysql_ssl_rsa_setup — Создание файлов SSL/RSA».
Характеристики файлов SSL и RSA
Файлы SSL и RSA, созданные автоматически сервером или с помощью вызова mysql_ssl_rsa_setup, имеют следующие характеристики:
Размеры ключей 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. Для файлов, сгенерированных с помощью mysql_ssl_rsa_setup, суффикс можно указать явно, используя опцию--suffix.Для файлов, созданных сервером, если полученные значения CN превышают 64 символа, часть имени
_опущена.suffix В файлах SSL пусты значения для страны (C), штата или провинции (ST), организации (O), имени подразделения организации (OU) и адреса электронной почты.
Файлы SSL, созданные сервером или с помощью mysql_ssl_rsa_setup, действительны в течение десяти лет с момента генерации.
Файлы RSA не имеют срока действия.
Файлы SSL имеют разные серийные номера для каждой пары сертификат/ключ (1 для CA, 2 для сервера, 3 для клиента).
Файлы, созданные автоматически сервером, принадлежат учетной записи, под которой работает сервер. Файлы, созданные с помощью mysql_ssl_rsa_setup, принадлежат пользователю, который вызвал эту программу. Это можно изменить на системах, поддерживающих системный вызов
chown(), если программа вызываетсяrootи указана опция--uidдля указания пользователя, которому должны принадлежать файлы.В системах 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.