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


Поддержка TLS в IoT Hub

Центр Интернета вещей использует протокол TLS для защиты подключений от устройств и служб Интернета вещей.

Примечание.

Концентратор IoT Azure завершит поддержку TLS 1.0 и 1.1 в соответствии с объявлением службы Azure о завершении поддержки TLS 1.0 и 1.1 31 августа 2025 г.

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

Важно различать поддержку TLS 1.2 и принудительное применение TLS 1.2. TLS 1.2 поддерживается во всех Центрах Интернета вещей, что означает, что Центры Интернета вещей могут обрабатывать подключения с помощью протокола TLS 1.2. С другой стороны, принудительное применение TLS 1.2 гарантирует, что Центр Интернета вещей принимает подключения только с помощью TLS 1.2 или более поздней версии. При включении принудительного применения TLS 1.2 служба также применяет наборы надежных шифров , как описано выше. Будущие обновления позволят применять tls 1.2, разрешая нерекомендемые наборы шифров.

В настоящее время принудительное применение TLS 1.2 поддерживается только в следующих регионах:

  • Восточная часть США
  • Центрально-южная часть США
  • западная часть США 2
  • Правительство США (Аризона)
  • Правительство США Вирджиния (Примечание: Поддержка TLS 1.0/1.1 недоступна в этом регионе. Принудительное применение TLS 1.2 должно быть включено, иначе создание IoT Хаба завершится ошибкой).

Чтобы узнать версию TLS, которую используют ваши устройства Центра Интернета вещей, ознакомьтесь с руководством по завершению поддержки TLS 1.0 и 1.1.

Взаимная поддержка TLS

Взаимная проверка подлинности TLS гарантирует, что клиент выполняет проверку подлинности сертификата сервера (Центр Интернета вещей), а сервер (Центр Интернета вещей) выполняет проверку подлинности клиента с помощью сертификата клиента X.509 или отпечатка X.509. Центр Интернета вещей выполняет авторизацию после завершения проверки подлинности.

Для протоколов AMQP и MQTT IoT Hub запрашивает сертификат клиента в начальном TLS-согласовании. Если он указан, Центр Интернета вещей проверяет подлинность сертификата клиента, а клиент выполняет проверку подлинности сертификата Центр Интернета вещей. Этот процесс называется взаимной проверкой подлинности TLS. Когда Центр Интернета вещей получает пакет подключения MQTT или откроется ссылка AMQP, Центр Интернета вещей выполняет авторизацию для запрашивающего клиента и определяет, требуется ли проверка подлинности X.509. Если взаимная проверка подлинности TLS завершена и клиенту разрешено подключаться как устройству, это разрешено. Однако если клиенту требуется проверка подлинности X.509 и проверка подлинности клиента не была завершена во время подтверждения TLS, то Центр Интернета вещей отклоняет подключение.

Для протокола HTTP, когда клиент выполняет свой первый запрос, Центр Интернета вещей проверяет, требуется ли для клиента проверка подлинности X.509 и если проверка подлинности клиента завершена, Центр Интернета вещей выполняет авторизацию. Если проверка подлинности клиента не завершена, Центр Интернета вещей отклоняет подключение.

После успешного подтверждения TLS Центр Интернета вещей может проверить подлинность устройства с помощью симметричного ключа или сертификата X.509. Для аутентификации на основе сертификатов Центр Интернета вещей проверяет сертификат по отпечатку или с использованием предоставленного центра сертификации (ЦС). Дополнительные сведения см. в статье "Проверка подлинности удостоверений с помощью сертификатов X.509".

Сертификат TLS сервера Центра Интернета вещей

Во время рукопожатия TLS IoT Hub предоставляет подключающимся клиентам серверные сертификаты с ключом RSA. Все центры Интернета вещей в глобальном облаке Azure используют сертификат TLS, выданный Global Root G2 DigiCert.

Мы настоятельно рекомендуем, чтобы все устройства доверяли следующим трем корневым УЦ:

  • Корневой центр сертификации DigiCert Global G2
  • Удостоверяющий центр Microsoft RSA 2017

Ссылки на скачивание этих сертификатов см. в разделе "Центр сертификации Azure".

Миграции корневого центра сертификации встречаются редко. Вы всегда должны подготовить решение Интернета вещей к маловероятной ситуации, когда корневой ЦС скомпрометирован и требуется экстренная смена корневого ЦС в экстренном порядке.

Комплекты шифров

Чтобы обеспечить соответствие политике безопасности Azure для безопасного подключения, Центр Интернета вещей рекомендует следующие наборы шифров RSA и ECDSA, требующие минимального применения TLS 1.2:

  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384

В настоящее время в Центр Интернета вещей разрешены следующие наборы шифров. Однако эти наборы шифров больше не рекомендуются рекомендациями по безопасности Azure. Эти наборы шифров работают с TLS версии 1.0, 1.1 и 1.2.

  • TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_256_GCM_SHA384
  • TLS_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_256_CBC_SHA256
  • TLS_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
  • TLS_RSA_WITH_AES_128_CBC_SHA
  • TLS_RSA_WITH_AES_256_CBC_SHA

Клиент может предложить список более надежных наборов шифров для использования во время ClientHello. Однако Центр Интернета вещей может не поддерживать некоторые из них, например ECDHE-ECDSA-AES256-GCM-SHA384. В этом случае Центр Интернета вещей пытается следовать предпочтениям клиента, но в конечном итоге согласовывает набор шифров с ServerHello.

Измените настройки IoT Hub для использования TLS 1.2 и строгих шифров.

Чтобы обеспечить соответствие ваших устройств Интернета вещей TLS 1.2 и списками шифров с высокой степенью безопасности, вы можете обеспечить соответствие с помощью возможности принудительного применения минимальных требований TLS в Центре Интернета вещей Azure.

В настоящее время эта функция доступна только в следующих регионах и во время создания Центра Интернета вещей (остальные регионы Azure будут поддерживаться в 2025 году):

  • Восточная часть США
  • Центрально-южная часть США
  • западная часть США 2
  • Правительство США Аризона
  • US Gov (Вирджиния) (поддержка TLS 1.0/1.1 недоступна в этом регионе — необходимо включить принудительное использование TLS 1.2, иначе не удастся создать Центр Интернета вещей)

Для включения TLS 1.2 и использования наборов шифров с высокой степенью безопасности в портале Azure:

  1. Начиная с мастера создания центра Интернет вещей в портале Azure

  2. Выберите Регион из указанного выше списка.

  3. В разделе Управление -> Расширенные -> TLS -> Минимальная версия TLS выберите 1.2. Этот параметр отображается только для центра Интернета вещей, созданного в поддерживаемом регионе.

    Снимок экрана, показывающий, как включить принудительное применение TLS 1.2 при создании IoT-центра.

  4. Нажмите кнопку Создать

  5. Подключите ваши устройства Интернета вещей к этому хабу Интернета вещей.

Чтобы использовать шаблон ARM для создания, подготовьте новый центр Интернета вещей в любом из поддерживаемых регионов и присвойте свойству minTlsVersion значение 1.2 в спецификации ресурсов:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.Devices/IotHubs",
            "apiVersion": "2020-01-01",
            "name": "<provide-a-valid-resource-name>",
            "location": "<any-of-supported-regions-below>",
            "properties": {
                "minTlsVersion": "1.2"
            },
            "sku": {
                "name": "<your-hubs-SKU-name>",
                "tier": "<your-hubs-SKU-tier>",
                "capacity": 1
            }
        }
    ]
}

Созданный ресурс Центр Интернета вещей с помощью этой конфигурации отклоняет клиенты устройств и служб, которые пытаются подключиться с помощью TLS версии 1.0 и 1.1. Аналогичным образом рукопожатие TLS отклоняется, если ClientHello сообщение не перечисляет какие-либо рекомендуемые шифры.

Примечание.

Свойство minTlsVersion доступно только для чтения и не может быть изменено после создания ресурса Центр Интернета вещей. Поэтому необходимо заранее тщательно протестировать и убедиться, что все ваши устройства и службы Интернета вещей совместимы с TLS 1.2 и рекомендуемыми шифрами.

После отработки отказа свойство вашего Центра Интернета вещей сохраняет свою эффективность в геопаренной области.

Проверка версий TLS для устройств IoT Hub

Центр интернета вещей Azure может предоставлять журналы диагностики для нескольких категорий, которые можно анализировать с помощью журналов Azure Monitor. В журнале подключений можно найти версию TLS для устройств Центра Интернета вещей.

Чтобы просмотреть эти журналы, выполните следующие действия.

  1. Найдите нужный Центр Интернета вещей на портале Azure.
  2. В меню ресурсов в разделе "Мониторинг" выберите параметры диагностики. Убедитесь, что параметры диагностики имеют флажок "Подключения".
  3. В меню ресурсов в разделе "Мониторинг" выберите "Журналы".
  4. Введите следующий запрос:
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
| where Category == "Connections"
| where OperationName == "deviceConnect"
| extend props_json = parse_json(properties_s)
| project DeviceId = props_json.deviceId, TLSVersion = props_json.tlsVersion
  1. Пример результатов запроса выглядит следующим образом: Схема, показывающая запрос версии TLS устройства.
  2. Примечание. Запрос версии TLS недоступен для устройств с помощью подключений HTTPS.

Конфигурация TLS для пакета SDK и IoT Edge

Используйте следующие ссылки для настройки TLS 1.2 и разрешенных шифров в клиентских пакетах SDK для Центра Интернета вещей.

Язык Версии, поддерживающие TLS 1.2 Документация
C Тег 2019-12-11 или более новый Ссылка
Python Версия 2.0.0 или более новая Ссылка
C# Версия 1.21.4 или более новая Ссылка
Java Версия 1.19.0 или более новая Ссылка
Node.js Версия 1.12.2 или более новая Ссылка

Устройства IoT Edge можно настроить для использования TLS 1.2 при обмене данными с Центром Интернета вещей. Для этой цели используйте страницу документации IoT Edge.

Сертификат TLS сервера с эллиптической кривой (ECC)

Обеспечивая почти тот же уровень безопасности, что и сертификаты RSA, проверка сертификата ECC (с уникальными наборами шифров) использует до 40 % меньше вычислительных ресурсов, памяти и пропускной способности. Эта экономия важна для устройств Интернета вещей из-за небольших профилей и памяти, а также для поддержки вариантов использования в средах с ограниченной пропускной способностью сети.

Чтобы использовать сертификат сервера ECC Центр Интернета вещей, выполните приведенные ниже действия.

  1. Убедитесь, что все устройства доверяют следующим корневым центрам сертификации:
    • Корневой ЦС DigiCert Global G2
    • Корневой ЦС Microsoft RSA 2017
  2. Настройте клиент так, чтобы он включал только наборы шифров ECDSA и не включал наборы шифров RSA. Это поддерживаемые наборы шифров для сертификата ECC:
    • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
    • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
    • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
    • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  3. Подключите клиент к Центру Интернета вещей.

Согласование максимальной длины фрагментов TLS

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

Используйте эту функцию, чтобы указать максимальную длину фрагмента в виде открытого текста, значение которого меньше значения по умолчанию 2^14 байт. После согласования Центр Интернета вещей и клиент начинают фрагментирование сообщений, чтобы все фрагменты были меньше согласованной длины. Такое поведение полезно для устройств с ограниченным объемом памяти или вычислительных ресурсов. Дополнительные сведения см. в официальной спецификации расширения TLS.

Официальная поддержка пакета SDK для этой общедоступной предварительной версии пока недоступна. Начало работы

  1. Создайте Центр Интернета вещей.
  2. При использовании OpenSSL вызовите SSL_CTX_set_tlsext_max_fragment_length, чтобы указать размер фрагмента.
  3. Подключите клиент к Центру Интернета вещей.

Привязка к сертификату

Закрепление сертификатов и фильтрация сертификатов сервера TLS и промежуточных сертификатов, связанных с конечными точками Центр Интернета вещей, настоятельно не рекомендуется, так как корпорация Майкрософт часто развертывает эти сертификаты без уведомления. Если необходимо, привяжите только корневые сертификаты, как описано в этой записи блога Azure IoT.

Следующие шаги