Spec-Zone.ru › MySQL 8.4

8.3.3.1 Создание сертификатов SSL и RSA и ключей с помощью MySQL

MySQL предоставляет способы создания файлов сертификата и ключа SSL и пары ключей RSA, необходимых для поддержки зашифрованных подключений с использованием SSL и безопасного обмена паролями с использованием RSA по незащищенным подключениям, если эти файлы отсутствуют:

  • Сервер может автоматически сгенерировать эти файлы при запуске для дистрибутивов MySQL.

Важно

Автоматическое создание сервером помогает снизить барьер использования SSL, сделав генерацию необходимых файлов проще. Однако сертификаты, сгенерированные таким способом, являются самоподписанными, что может быть небезопасно. После приобретения опыта рекомендуем получить сертификаты и ключи от зарегистрированного центра сертификации.

Важно

Если клиент, подключающийся к экземпляру MySQL-сервера, использует сертификат SSL с расширением extendedKeyUsage (расширение X.509 v3), расширенное использование ключа должно включать аутентификацию клиента (clientAuth). Если сертификат SSL указан только для аутентификации сервера (serverAuth) и других целей, не связанных с сертификатами клиентов, проверка сертификата завершается неудачно, и подключение клиента к экземпляру MySQL-сервера прерывается. Расширение extendedKeyUsage в сертификатах SSL, генерируемых MySQL Server, отсутствует. Если вы используете собственный сертификат клиента, созданный другим способом, убедитесь, что любое расширение 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-сертификата и 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.3, «Аутентификация с плагином SHA-256» и Раздел 8.4.1.2, «Аутентификация с плагином кэширования 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-8.4-en/creating-ssl-rsa-files-using-mysql.html

Spec-Zone.ru

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