Compartir a través de


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 rechaza 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 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).

Certificado TLS de servidor

Durante un protocolo de enlace TLS, DPS presenta certificados de servidor con claves RSA para la conexión de clientes. Todas las instancias de DPS de la nube global de Azure usan el certificado TLS que emite el certificado DigiCert Global Root G2.

También se recomienda agregar certificados de la entidad de certificación raíz de Microsoft RSA 2017 a los dispositivos para evitar interrupciones en caso de que DigiCert Global Root G2 se retire inesperadamente. Aunque las migraciones de entidad de certificación raíz son poco frecuentes, para conseguir resistencia en el panorama de seguridad moderno debe preparar su escenario de IoT para el improbable caso de que una entidad de certificación raíz se vea en peligro o sea necesaria una migración de emergencia.

Se recomienda que todos los dispositivos confíen en las entidades de certificación raíz siguientes:

  • DigiCert Global G2
  • Microsoft RSA 2017

Para obtener los vínculos para descargar todos estos certificados, consulte los detalles de la entidad de certificación de Azure.

Confianza de certificados en los SDK

Los SDK de dispositivo IoT de Azure conectan y autentican dispositivos a los servicios de Azure IoT. Los distintos SDK administran certificados de diferentes maneras en función del idioma y la versión, pero la mayoría se basan en el almacén de certificados de confianza del dispositivo en lugar de anclar certificados directamente en el código base. Este enfoque proporciona flexibilidad y resistencia para controlar los cambios futuros en los certificados raíz.

En la tabla siguiente se resumen las versiones del SDK que admiten el almacén de certificados de confianza:

SDK de dispositivos IoT de Azure Versiones compatibles
C Todas las versiones admitidas actualmente
C# Todas las versiones admitidas actualmente
Java Versión 2.x.x y posteriores
Node.js Todas las versiones admitidas actualmente
Python Todas las versiones admitidas actualmente

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, ya que Microsoft suele implementar estos certificados con poca o ninguna notificación. Si es necesario, solo ancle los certificados raíz.

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.

Lenguaje 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.