Compatibilidad de TLS en Azure IoT Hub Device Provisioning Service (DPS)

DPS utiliza Seguridad de la capa de transporte (TLS) para proteger las conexiones de los dispositivos IoT.

Las versiones actuales del protocolo TLS admitidas por DPS son:

  • TLS 1.2

Restricción de conexiones a una versión mínima de TLS

Puede configurar instancias de DPS para permitir solo aquellas conexiones de cliente de dispositivo que usen una versión mínima de TLS o superior.

Importante

Actualmente, DPS solo admite TLS 1.2, por lo que no es necesario especificar la versión mínima de TLS al crear una instancia de DPS. Esta característica se proporciona para una expansión futura.

Para ello, aprovisione un nuevo recurso de DPS estableciendo la propiedad minTlsVersion en 1.2 en la especificación de recursos de DPS de la plantilla de Azure Resource Manager. En la plantilla de ejemplo siguiente, JSON especifica la propiedad minTlsVersion de una nueva instancia de DPS.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.Devices/ProvisioningServices",
            "apiVersion": "2020-01-01",
            "name": "<provide-a-valid-DPS-resource-name>",
            "location": "<any-region>",
            "properties": {
                "minTlsVersion": "1.2"
            },
            "sku": {
                "name": "S1",
                "capacity": 1
            },
        }     
    ]
}

Puede implementar la plantilla con el siguiente comandos de la CLI de Azure.

az deployment group create -g <your resource group name> --template-file template.json

Para más información sobre cómo crear recursos de DPS con plantillas de Resource Manager, consulte Configuración de DPS con una plantilla de Azure Resource Manager.

El recurso de DPS creado con esta configuración rechazará los dispositivos que intenten conectarse mediante las versiones 1.0 y 1.1 de TLS.

Nota:

La propiedad minTlsVersion es de solo lectura y no se puede cambiar una vez creado el recurso de DPS. Por lo tanto, es esencial que compruebe y valide de antemano que todos los dispositivos de IoT son compatibles con TLS 1.2 y con los cifrados recomendados.

Nota:

En caso de conmutaciones por error, la propiedad minTlsVersion de su DPS seguirá siendo efectiva en la región con emparejamiento geográfico después de la conmutación por error.

Las instancias de DPS exigen el uso de los siguientes conjuntos de cifrado recomendados y heredados:

Conjuntos de cifrado de TLS 1.2 recomendados
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

Conjuntos de cifrados heredados

Los conjuntos de cifrado siguen siendo compatibles actualmente con DPS, pero quedarán en desuso. Si es posible, use los conjuntos de cifrado recomendados.

Opción 1 (mayor seguridad)
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384 (uses SHA-1)
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256 (uses SHA-1)
TLS_RSA_WITH_AES_256_GCM_SHA384 (lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_128_GCM_SHA256 (lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_256_CBC_SHA256 (lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_128_CBC_SHA256 (lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_256_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_128_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy)
Opción 2 (mayor rendimiento)
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256 (uses SHA-1)
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384 (uses SHA-1)
TLS_RSA_WITH_AES_128_GCM_SHA256 (lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_256_GCM_SHA384 (lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_128_CBC_SHA256 (lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_256_CBC_SHA256 (lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_128_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_256_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy)

Compatibilidad mutua con TLS

Cuando las inscripciones de DPS están configuradas para la autenticación X.509, DPS admite TLS mutua (mTLS).

Asignación de certificados

La asignación de certificados y el filtrado de los certificados de servidor TLS (también conocidos como certificados hoja) y los certificados intermedios asociados a puntos de conexión de DPS se desaconseja encarecidamente, ya que Microsoft suele implementar estos certificados con poca o ninguna notificación. Si es necesario, asigne solo los certificados raíz como se describe en esta entrada de blog de Azure IoT.

Uso de TLS 1.2 en los SDK de IoT

Use los vínculos siguientes para configurar TLS 1.2 y los cifrados permitidos en los SDK de cliente de Azure IoT.

Idioma Versiones compatibles con TLS 1.2 Documentación
C Etiqueta 2019-12-11 o más reciente Vínculo
Python Versión 2.0.0 o más reciente Vínculo
C# Versión 1.21.4 o más reciente Vínculo
Java Versión 1.19.0 o más reciente Vínculo
NodeJS Versión 1.12.2 o más reciente Vínculo

Uso de TLS 1.2 con IoT Hub

IoT Hub se puede configurar para usar TLS 1.2 al comunicarse con dispositivos. Para obtener más información, vea Desuso de TLS 1.0 y 1.1 en IoT Hub.

Uso de TLS 1.2 con IoT Edge

Los dispositivos de IoT Edge se pueden configurar para que usen TLS 1.2 al comunicarse con IoT Hub y DPS. Para obtener más información, consulte la página de documentación de IoT Edge.