Spec-Zone.ru › MySQL 5.7

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

  • Вручную создание файлов SSL и RSA с использованием mysql_ssl_rsa_setup

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

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

  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 включена; не указаны никакие опции RSA; файлы RSA отсутствуют в каталоге данных. Эти пары ключей позволяют безопасно обмениваться паролями с использованием RSA по незащищенным соединениям для учетных записей, аутентифицированных плагином sha256_password; см. Раздел 6.4.1.5 «Плагиновая аутентификация SHA-256».

  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).

Вручную создание файлов SSL и RSA с использованием mysql_ssl_rsa_setup

Дистрибутивы MySQL включают утилиту mysql_ssl_rsa_setup, которую можно вызвать вручную для создания файлов SSL и RSA. Эта утилита включена во все дистрибутивы MySQL, но требует наличия команды openssl. Инструкции по использованию см. в разделе 4.4.5 «mysql_ssl_rsa_setup — Создание файлов SSL/RSA».

END_OF_DOCUMENT_MARKER
Характеристики файлов 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.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/creating-ssl-rsa-files-using-mysql.html

Spec-Zone.ru

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