Spec-Zone.ru › MySQL 9.2

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

  • Характеристики файлов SSL и RSA

Автоматическое создание файлов 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 для использования зашифрованных соединений».

  1. Сервер проверяет каталог данных на наличие файлов SSL с указанными именами:

    ca.pem
    server-cert.pem
    server-key.pem
    
  2. Если любой из этих файлов присутствует, сервер не создаёт файлы 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
    
  3. Если сервер автоматически генерирует файлы 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».

  1. Сервер проверяет каталог данных на наличие файлов RSA с указанными именами:

    private_key.pem      Private member of private/public key pair
    public_key.pem       Public member of private/public key pair
    
  2. Если любой из этих файлов присутствует, сервер не создаёт файлы RSA. В противном случае он создаёт их.

  3. Если сервер автоматически генерирует файлы 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.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/creating-ssl-rsa-files-using-mysql.html

Spec-Zone.ru

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