Общие сведения об изменениях в корневом ЦС для одного сервера База данных 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 "Доверенные корневые центры сертификации". Если какие либо из этих сертификатов в нем отсутствуют, импортируйте их.

      Azure Database for MySQL .NET cert diagram

    • Для пользователей .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, необходимо сбросить реплику, выполнив команду CALL 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. Если вы приобрели план поддержки и вам нужна техническая помощь, свяжитесь с нами.