Поделиться через


Общие сведения об изменениях в корневом ЦС для одного сервера База данных Azure для MySQL

ОБЛАСТЬ ПРИМЕНЕНИЯ: База данных Azure для MySQL — отдельный сервер

Внимание

База данных Azure для MySQL один сервер находится на пути выхода на пенсию. Настоятельно рекомендуется выполнить обновление до База данных Azure для MySQL гибкого сервера. Дополнительные сведения о миграции на гибкий сервер База данных Azure для MySQL см. в статье "Что происходит с одним сервером База данных Azure для MySQL?"

База данных Azure для MySQL отдельный сервер в рамках стандартных рекомендаций по обслуживанию и безопасности завершает изменение корневого сертификата с октября 2022 года. Эта статья содержит дополнительные сведения об изменениях, затронутых ресурсах и действиях, которые необходимо выполнить, чтобы обеспечить подключение приложения к серверу базы данных.

Примечание.

Эта статья относится только к отдельному серверу Базы данных Azure для MySQL. Сертификат, необходимый для взаимодействия с гибким сервером Базы данных Azure для MySQL по протоколу SSL, — это сертификат DigiCert глобального корневого ЦС.

Эта статья содержит упоминания термина slave (ведомый) . Корпорация Майкрософт больше не использует его. Когда этот термин будет удален из программного обеспечения, мы удалим его из статьи.

Для чего необходимо обновление корневого сертификата?

Пользователи Базы данных Azure для MySQL могут использовать только предопределенный сертификат для подключения к серверу MySQL, который доступен здесь. Тем не менее, форум центра сертификации (ЦС) недавно опубликовал отчеты о нескольких сертификатах, выданных поставщиками ЦС, которые должны быть несоответствующим.

В соответствии с требованиями отрасли поставщики ЦС начали отзыв сертификатов ЦС для несоответствующих ЦС, требуя, чтобы серверы использовали сертификаты, выданные соответствующими центрами сертификации, и подписали сертификаты ЦС из этих соответствующих ЦС. Так как База данных Azure для MySQL использовали один из этих несоответствующих сертификатов, необходимо повернуть сертификат на соответствующую версию, чтобы свести к минимуму потенциальную угрозу для серверов MySQL.

Нужно ли вносить изменения в мой клиент, чтобы сохранить возможность подключения?

Если вы выполнили действия из раздела Создание объединенного сертификата ЦС, то вы сможете и дальше использовать подключение, пока сертификат BaltimoreCyberTrustRoot не будет удален из объединенного сертификата ЦС. Для сохранения возможности подключения мы не рекомендуем удалять BaltimoreCyberTrustRoot из своего объединенного сертификата ЦС до тех пор, пока вы не получите дополнительное уведомление.

Создание объединенного сертификата ЦС

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

  1. Скачайте сертификаты корневого ЦС BaltimoreCyberTrustRoot и DigiCertGlobalRootG2 по следующим ссылкам:

  2. Создайте объединенное хранилище сертификатов ЦС с сертификатами BaltimoreCyberTrustRoot и DigiCertGlobalRootG2.

    • Для пользователей Java (MySQL Connector/J) выполните:

      keytool -importcert -alias MySQLServerCACert -file D:\BaltimoreCyberTrustRoot.crt.pem -keystore truststore -storepass password -noprompt
      
      keytool -importcert -alias MySQLServerCACert2 -file D:\DigiCertGlobalRootG2.crt.pem -keystore truststore -storepass password -noprompt
      

      Затем замените исходный файл хранилища ключей созданным файлом.

      • System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file");
      • System.setProperty("javax.net.ssl.trustStorePassword","password");
    • Для пользователей .NET (MySQL Connector/NET, MySQLConnector) убедитесь, что сертификаты BaltimoreCyberTrustRoot и DigiCertGlobalRootG2 существуют в хранилище сертификатов Windows "Доверенные корневые центры сертификации". Если какие либо из этих сертификатов в нем отсутствуют, импортируйте их.

    • Для пользователей .NET в Linux, использующих SSL_CERT_DIR, убедитесь, что сертификаты BaltimoreCyberTrustRoot и DigiCertGlobalRootG2 существуют в каталоге, указанном SSL_CERT_DIR. Если какие-либо из этих сертификатов в нем отсутствуют, создайте соответствующие файлы сертификатов.

    • Для других пользователей (клиент MySQL, MySQL Workbench, C, C++, Go, Python, Ruby, PHP, NodeJS, Perl, Swift) можно объединить два файла сертификатов ЦС в следующий формат:

      -----BEGIN CERTIFICATE-----
      (Root CA1: BaltimoreCyberTrustRoot.crt.pem)
      -----END CERTIFICATE-----
      -----BEGIN CERTIFICATE-----
      (Root CA2: DigiCertGlobalRootG2.crt.pem)
      -----END CERTIFICATE-----
      
  3. Замените исходный PEM-файл корневого ЦС объединенным файлом корневого ЦС и перезапустите приложение или клиент.

    В будущем, после развертывания нового сертификата на стороне сервера, можно будет заменить ваш PEM-файл ЦС сертификатом DigiCertGlobalRootG2.crt.pem.

Примечание.

Не удаляйте и не изменяйте сертификат Baltimore, пока не будет выполнено изменение сертификата. После внесения изменений мы отправим сообщение, а затем безопасно удалить сертификат Балтимора.

Что делать, если мы удалили сертификат BaltimoreCyberTrustRoot?

При подключении к серверу База данных Azure для MySQL возникают ошибки подключения. Необходимо снова настроить SSL с сертификатом BaltimoreCyberTrustRoot для поддержания подключения.

Часто задаваемые вопросы

Если я не использую протокол SSL/TLS, необходимо ли мне все равно обновить корневой ЦС?

Если вы не используете SSL/TLS, никаких действий не потребуется.

Когда будет меняться корневой сертификат экземпляра одного сервера?

Миграция из БалтимораCyberTrustRoot в DigiCertGlobalRootG2 будет осуществляться во всех регионах Azure, начиная с октября 2022 года . Чтобы убедиться, что вы не теряете подключение к серверу, выполните действия, описанные в разделе "Создание объединенного сертификата ЦС". Объединенный сертификат ЦС позволит подключиться через SSL к одному экземпляру сервера с одним из этих двух сертификатов.

Когда можно полностью удалить сертификат BaltimoreCyberTrustRoot?

После успешной миграции во всех регионах Azure мы отправим сообщение для обмена данными, которое можно безопасно изменить один сертификат CA DigiCertGlobalRootG2 .

Я не указываю сертификат ЦС при подключении к одному экземпляру сервера по протоколу SSL, нужно ли выполнять описанные выше действия ?

Если у вас есть корневой сертификат ЦС в доверенном корневом хранилище, дальнейшие действия не требуются. Это также относится к драйверам клиентов, которые используют локальное хранилище для доступа к корневому сертификату ЦС.

Если я использую протокол SSL/TLS, нужно ли перезагрузить сервер базы данных, чтобы обновить корневой ЦС?

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

Как узнать, используется ли протокол SSL/TLS с проверкой корневого сертификата?

Вы можете определить, проверяется ли корневой сертификат при подключении, просмотрев строку подключения.

  • Если строка подключения содержит sslmode=verify-ca или sslmode=verify-identity, необходимо обновить сертификат.
  • Если строка подключения содержит sslmode=disable, sslmode=allow, sslmode=prefer или sslmode=require, обновлять сертификаты не нужно.
  • Если в строке подключения не задан режим sslmode, обновлять сертификаты не нужно.

Если вы используете клиент, который абстрагирует строку подключения, изучите документацию по этому клиенту, чтобы понять, проверяет ли он сертификаты.

Что произойдет при использовании Службы приложений с Базой данных Azure для MySQL?

Существует два возможных сценария подключения служб приложений Azure к Базе данных Azure для MySQL. Они определяются тем, как ваше приложение использует протокол SSL.

  • Этот новый сертификат добавлен в Службу приложений на уровне платформы. Если вы используете в приложении SSL-сертификаты, включенные в платформу Службы приложений, то никаких действий не требуется. Этот сценарий является наиболее распространенным.
  • Если вы явно указываете путь к файлу SSL-сертификата в коде, то необходимо скачать новый сертификат и создать объединенный сертификат, как упоминалось выше, и использовать этот файл сертификата. Хороший пример такого сценария — использование настраиваемых контейнеров в Службе приложений, как описано в документации по Службе приложений. Это редкий сценарий, но нам известно, что некоторые пользователи реализуют его.

Что произойдет при использовании Службы Azure Kubernetes (AKS) с Базой данных Azure для MySQL?

Если вы пытаетесь подключиться к Базе данных Azure для MySQL с помощью Службы Azure Kubernetes (AKS), это похоже на получение доступа из выделенной среды размещения клиента. Ознакомьтесь с этими инструкциями.

Что произойдет при использовании Фабрики данных Azure для подключения к Базе данных Azure для MySQL?

Соединитель, использующий Azure Integration Runtime, применяет сертификаты из хранилища сертификатов Windows в среде, размещенной в Azure. Эти сертификаты уже совместимы с новыми применяемыми сертификатами, поэтому никаких действий не требуется.

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

Нужно ли мне запланировать время простоя из-за обслуживания сервера базы данных для внесения этого изменения?

№ Так как это изменение вносится только на стороне клиента и влияет на его подключение к серверу базы данных, простоя из-за обслуживания сервера базы данных для внесения этого изменения быть не должно.

Как часто корпорация Майкрософт обновляет свои сертификаты и какова политика срока действия?

Эти сертификаты, используемые Базой данных Azure для MySQL, предоставляются доверенными центрами сертификации (ЦС). Поэтому поддержка этих сертификатов зависит от их поддержки центром сертификации. Срок действия сертификата BaltimoreCyberTrustRoot истекает в 2025 году, поэтому корпорация Майкрософт должна выполнить изменение сертификата до истечения срока действия. Кроме того, если в этих предопределенных сертификатах существуют непредвиденные ошибки, корпорация Майкрософт должна сделать смену сертификатов в самый ранний момент, как и в случае изменения, выполняемого 15 февраля 2021 г., чтобы обеспечить безопасность и соответствие службы всегда требованиям.

Если я использую реплики чтения, нужно ли выполнить это обновление только на исходном сервере или также на репликах чтения?

Так как это обновление является изменением на стороне клиента, если клиент использовался для чтения данных с сервера реплики, необходимо также применить изменения для этих клиентов.

Если я использую репликацию входных данных, нужно ли выполнять какие-либо действия?

Если вы используете репликацию входных данных для подключения к Базе данных Azure для MySQL, необходимо учесть два фактора.

  • Если репликация данных выполняется с виртуальной машины (локальной виртуальной машины или виртуальной машины Azure) в Базу данных Azure для MySQL, то необходимо проверить, используется ли протокол SSL для создания реплики. Выполните команду SHOW SLAVE STATUS и проверьте приведенный ниже параметр.

    Master_SSL_Allowed            : Yes
    Master_SSL_CA_File            : ~\azure_mysqlservice.pem
    Master_SSL_CA_Path            :
    Master_SSL_Cert               : ~\azure_mysqlclient_cert.pem
    Master_SSL_Cipher             :
    Master_SSL_Key                : ~\azure_mysqlclient_key.pem
    

    Если вы видите, что сертификат предоставляется для CA_file, SSL_Cert и SSL_Key, необходимо обновить файл, добавив новый сертификат и создав объединенный файл сертификата.

  • Если репликация данных находится между двумя серверами База данных Azure для MySQL, необходимо сбросить реплику, выполнив вызов вызова mysql.az_replication_change_master и предоставив новый двойной корневой сертификат в качестве последнего параметра master_ssl_ca.

Существует ли запрос на стороне сервера для определения использования SSL?

Чтобы проверить, используется ли SSL-соединение для подключения к серверу, ознакомьтесь с проверкой SSL.

Требуется ли выполнить какое-либо действие, если в моем файле сертификата уже есть сертификат DigiCertGlobalRootG2?

№ Если ваш файл сертификата уже содержит сертификат DigiCertGlobalRootG2, никаких действий не требуется.

Почему необходимо обновить корневой сертификат, если используется драйвер PHP с enableRedirect?

Для обеспечения соответствия требованиям сертификаты ЦС сервера узла были изменены с BaltimoreCyberTrustRoot на DigiCertGlobalRootG2. После этого обновления подключения к базам данных, использующие драйвер клиента PHP с параметром enableRedirect, не могут использовать подключение к серверу, так как клиентским устройствам ничего неизвестно об изменении сертификата и новом корневом ЦС. Клиентские устройства, использующие драйверы перенаправления PHP, подключаются непосредственно к серверу узла, обходя шлюз. Дополнительные сведения об архитектуре База данных Azure для MySQL одном сервере см. в этой ссылке.

Что делать, если у меня возникнут дополнительные вопросы?

Если у вас еще остались вопросы, вы сможете получить ответы от экспертов сообщества в Microsoft Q&A. Если вы приобрели план поддержки и вам нужна техническая помощь, свяжитесь с нами.