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


Поддержка протокола TLS в Центре Интернета вещей

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

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

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

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

Мы также рекомендуем добавить сертификаты Корневого центра сертификации Microsoft RSA 2017 на устройства, чтобы предотвратить нарушения в случае неожиданного выхода на пенсию Глобального корневого центра сертификации DigiCert G2. Хотя миграции корневого ЦС являются редкими, для обеспечения устойчивости в современном ландшафте безопасности следует подготовить сценарий Интернета вещей к маловероятному событию, что корневой ЦС скомпрометирован или требуется миграция корневого ЦС для аварийного реагирования.

Настоятельно рекомендуется доверять всем устройствам следующие корневые ЦС:

  • Корневой ЦС DigiCert Global G2
  • Корневой ЦС Microsoft RSA 2017

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

Доверие к сертификатам в пакетах SDK

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

В следующей таблице приведены сведения о том, какие версии пакета SDK поддерживают хранилище доверенных сертификатов:

Пакет SDK для устройств Azure IoT Поддерживаемые версии
C Все поддерживаемые в настоящее время версии
C# Все поддерживаемые в настоящее время версии
Java Версия 2.x.x и выше
Node.js Все поддерживаемые в настоящее время версии
Python Все поддерживаемые в настоящее время версии

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

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

TLS-сертификат сервера Elliptic Curve Cryptography (ECC) (предварительная версия)

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

Настоятельно рекомендуется, чтобы все устройства, использующие ECC, доверяли следующим двум корневым ЦС:

  • Корневой ЦС DigiCert Global G3
  • Корневой ЦС Microsoft RSA 2017

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

Использование предварительной версии сертификата сервера ECC Центра Интернета вещей

  1. Создайте новый центр Интернета вещей с режимом предварительной версии.
  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 1.2 доступно в некоторых регионах

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

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

Чтобы включить принудительное применение TLS 1.2, выполните действия, описанные в разделе "Создание центра Интернета вещей в портал Azure", кроме

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

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

    Снимок экрана: включение принудительного применения TLS 1.2 во время создания центра Интернета вещей

Чтобы использовать шаблон 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 и рекомендуемыми шифрами.

После отработки отказа свойство minTlsVersion Центра Интернета вещей останется в силе в регионе, географически связанном с исходным.

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

Центр Интернета вещей, настроенные для принятия только TLS 1.2, также применяют следующие рекомендуемые наборы шифров:

  • 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

В центрах Интернета вещей, для которых не настроено требование использовать только протокол TLS 1.2, версия протокола 1.2 будет работать со следующими наборами шифров:

  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • 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_256_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_RSA_WITH_AES_256_CBC_SHA
  • TLS_RSA_WITH_AES_128_CBC_SHA
  • TLS_RSA_WITH_3DES_EDE_CBC_SHA(Этот шифр будет устарел 10.01.2022 и больше не будет использоваться для подтверждения TLS)

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

Конфигурация 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 или более новая Ссылка
NodeJS Версия 1.12.2 или более новая Ссылка

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

Проверка подлинности устройства

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

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

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

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

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

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

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

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

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

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

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