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


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

Важно!

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

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

Примечание.

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

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

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

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

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

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

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

  • Скачайте BaltimoreCyberTrustRoot и DigiCertGlobalRootG2 CA со ссылками ниже:

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

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

      keytool -importcert -alias MariaDBServerCACert  -file D:\BaltimoreCyberTrustRoot.crt.pem  -keystore truststore -storepass password -noprompt
      
      keytool -importcert -alias MariaDBServerCACert2  -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 (MariaDB Connector/NET, MariaDBConnector) убедитесь, что сертификаты BaltimoreCyberTrustRoot и DigiCertGlobalRootG2 существуют в хранилище сертификатов Windows "Доверенные корневые центры сертификации". Если какие либо из этих сертификатов в нем отсутствуют, импортируйте их.

      Azure Database for MariaDB .net cert

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

    • Для других пользователей (клиент MariaDB, MariaDB 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-----
    
  • Замените исходный PEM-файл корневого ЦС объединенным файлом корневого ЦС и перезапустите приложение или клиент.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4. Каковы последствия использования Службы приложений с Базой данных Azure для MariaDB?

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

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

5. Каковы последствия использования Службы Azure Kubernetes (AKS) с Базой данных Azure для MariaDB?

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

6. Каково влияние использования Фабрики данных Azure для подключения к Базе данных Azure для MariaDB?

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

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

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

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

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

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

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

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

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

  • Если реплика данных выполняется из виртуальной машины (локальной или виртуальной машины 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
    

Если вы используете репликацию входных данных для подключения к Базе данных 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.

11. Существует ли запрос на стороне сервера, чтобы проверить, используется ли протокол SSL?

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

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

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

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

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