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

Область применения: отдельный сервер Базы данных Azure для PostgreSQL

Внимание

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

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

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

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

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

Новый сертификат развернут и действует начиная с декабря 2022 г. (12.2022).

Какие изменения планируется выполнить с декабря 2022 г. (12.2022)?

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

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

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

Нужно ли вносить изменения в сертификаты клиента.

По умолчанию PostgreSQL не выполняет проверку сертификата сервера. Это означает, что теоретически можно спуфинировать удостоверение сервера (например, изменив запись DNS или заняв IP-адрес сервера) без знания клиента. Чтобы предотвратить спуфингивание, необходимо использовать проверку SSL-сертификата на клиенте. Такая проверка может быть задана с помощью значения режима ssl клиента приложения строка подключенияverify-ca или verify-full. Если выбраны эти значения в режиме SSL, следует следовать указаниям в следующем разделе.

Рекомендация по обновлению сертификата клиента

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

  • При необходимости, чтобы предотвратить будущие нарушения, также рекомендуется добавить следующие корни в доверенное хранилище:

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

    • Для пользователей Java (PostgreSQL JDBC), использующих DefaultJavaSSLFactory, выполните:

      keytool -importcert -alias PostgreSQLServerCACert  -file D:\BaltimoreCyberTrustRoot.crt.pem  -keystore truststore -storepass password -noprompt
      
      keytool -importcert -alias PostgreSQLServerCACert2  -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 (Npgsql) в Windows нужно убедиться в том, что корневой сертификат Baltimore CyberTrust и глобальный корневой сертификат G2 DigiCert существуют в хранилище сертификатов Windows и в доверенных корневых центрах сертификации. Если какие либо из этих сертификатов в нем отсутствуют, импортируйте их.

      Сертификаты .NET Базы данных Azure для PostgreSQL

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

    • Для других пользователей клиента PostgreSQL можно объединить два файла сертификатов ЦС в приведенном ниже формате


      -----BEGIN CERTIFICATE-----
      (Root CA1: BaltimoreCyberTrustRoot.crt.pem)
      -----END CERTIFICATE-----
      -----BEGIN CERTIFICATE-----
      (Root CA2: DigiCertGlobalRootG2.crt.pem)
      -----END CERTIFICATE-----

  • Замените исходный PEM-файл корневого ЦС объединенным файлом корневого ЦС и перезапустите приложение или клиент.

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

Примечание.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

8. Если я создаю новый сервер после 30 ноября 2022 г., я буду затронуты?

Для серверов, созданных после 30 ноября 2022 г., вы продолжите использовать BaltimoreCyberTrustRoot вместе с новыми корневыми сертификатами DigiCertGlobalRootRootG2 в хранилище SSL-сертификатов клиента базы данных для подключения приложений с помощью SSL.

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

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

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

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

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

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

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

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

13. Как проверка сертификат, отправляемый сервером?

Существует множество инструментов, которые можно использовать. Например, DigiCert имеет удобное средство , которое показывает цепочку сертификатов любого имени сервера. (Это средство работает с общедоступным сервером; оно не может подключиться к серверу, который содержится в виртуальной сети (VNET)). Другим средством, который можно использовать, является OpenSSL в командной строке, этот синтаксис можно использовать для проверка сертификатов:

openssl s_client -starttls postgres -showcerts -connect <your-postgresql-server-name>:5432

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

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

  • В качестве типа проблемы укажите Техническая.
  • Для подписки выберите подписку.
  • Для службы выберите "Мои службы", а затем выберите База данных Azure для PostgreSQL — один сервер.
  • Для типа проблемы выберите "Безопасность".
  • Для подтипа проблемы выберите "Шифрование Azure" и "Двойное шифрование инфраструктуры"