Compartir a través de


Compatibilidad de la Seguridad de la capa de transporte (TLS) con IoT Hub

IoT Hub usa Seguridad de la capa de transporte (TLS) para proteger las conexiones de los dispositivos y servicios de IoT.

Nota:

Azure IoT Hub dejará de ser compatible con TLS 1.0 y 1.1 en consonancia con el anuncio de servicio general de Azure para la retirada de TLS 1.0 y 1.1 el 31 de agosto de 2025.

Por lo tanto, es esencial que pruebe y valide adecuadamente que todos sus dispositivos y servicios IoT son compatibles con TLS 1.2 y los cifrados recomendados de antemano. Se recomienda encarecidamente usar la característica de cumplimiento de TLS mínima como mecanismo para pruebas y cumplimiento.

Importante

Es importante distinguir entre la compatibilidad con TLS 1.2 y la imposición de TLS 1.2. TLS 1.2 se admite en todas las instancias de IoT Hub, lo que significa que IoT Hubs puede controlar las conexiones mediante el protocolo TLS 1.2. Por otro lado, la aplicación de TLS 1.2 garantiza que IoT Hub solo acepte conexiones mediante TLS 1.2 o superior. Cuando el cumplimiento de TLS 1.2 está habilitado, el servicio también aplica el uso de conjuntos de cifrado seguros , tal como se describió anteriormente. Las actualizaciones futuras permitirán la aplicación de TLS 1.2 al tiempo que permiten conjuntos de cifrado no recomendados.

Actualmente, el cumplimiento de TLS 1.2 solo se admite en regiones seleccionadas:

  • Este de EE. UU.
  • Centro-sur de EE. UU.
  • Oeste de EE. UU. 2
  • US Gov: Arizona
  • US Gov Virginia (Nota: la compatibilidad con TLS 1.0/1.1 no está disponible en esta región. La aplicación de TLS 1.2 debe estar habilitada o se producirá un error en la creación de IoT Hub.

Para averiguar la versión de TLS que ejecutan los dispositivos de IoT Hub, consulte la guía de finalización de soporte técnico de TLS 1.0 y 1.1.

Compatibilidad mutua con TLS

La autenticación TLS mutua garantiza que el cliente autentica el certificado del servidor (IoT Hub) y el servidor (IoT Hub) autentica al cliente utilizando el certificado de cliente X.509 o la huella digital X.509. IoT Hub realiza la autorización una vez completada la autenticación.

Para los protocolos Advanced Message Queuing Protocol (AMQP) y Message Queuing Telemetry Transport (MQTT), IoT Hub solicita un certificado de cliente en el protocolo TLS inicial. Si se proporciona uno, IoT Hub autentica el certificado de cliente y el cliente autentica el certificado de IoT Hub. Este proceso se denomina autenticación TLS mutua. Cuando IoT Hub recibe un paquete de conexión MQTT o se abre un vínculo AMQP, IoT Hub realiza la autorización del cliente solicitante y determina si el cliente requiere autenticación X.509. Si se completó la autenticación TLS mutua y el cliente está autorizado para conectarse como dispositivo, se permite. Sin embargo, si el cliente requiere autenticación X.509 y la autenticación del cliente no se completó durante el protocolo de enlace TLS, entonces IoT Hub rechaza la conexión.

En el caso del protocolo HTTP, cuando el cliente realiza su primera solicitud, IoT Hub comprueba si el cliente requiere autenticación X.509 y si se completó la autenticación del cliente, IoT Hub realiza la autorización. Si no se completó la autenticación de cliente, centro de IoT rechaza la conexión

Después de un protocolo de enlace de TLS correcto, IoT Hub puede autenticar un dispositivo mediante una clave simétrica o un certificado X.509. Para la autenticación basada en certificados, IoT Hub valida el certificado con la huella digital o la entidad de certificación (CA) que proporcione. Para obtener más información, consulte Autenticación de identidades con certificados X.509.

Certificado TLS para el servidor de IoT Hub

Durante un protocolo de enlace TLS, IoT Hub presenta certificados de servidor con claves RSA para la conexión de clientes. Todos los centros de IoT de la nube global de Azure usan el certificado TLS que emite DigiCert Global Root G2.

Se recomienda encarecidamente que todos los dispositivos confíen en las tres 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.

Las migraciones de CA raíz son poco frecuentes. Siempre debe preparar su solución IoT para el improbable caso de que una CA raíz se vea comprometida y sea necesaria una migración de emergencia de la CA raíz.

Conjuntos de cifrado

Para cumplir con la directiva de seguridad de Azure para una conexión segura, IoT Hub recomienda los siguientes conjuntos de cifrado RSA y ECDSA que requieren el cumplimiento mínimo de 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

Los siguientes conjuntos de cifrado están actualmente permitidos en IoT Hub. Sin embargo, las directrices de seguridad de Azure ya no recomiendan estos conjuntos de cifrado. Estos conjuntos de cifrado funcionan con las versiones 1.0, 1.1 y 1.2 de TLS.

  • 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

Un cliente puede sugerir una lista de conjuntos de cifrado mayores para usar durante el mensaje ClientHello. Sin embargo, IoT Hub podría no admitir algunos de ellos, por ejemplo, ECDHE-ECDSA-AES256-GCM-SHA384. En este caso, IoT Hub intenta seguir la preferencia del cliente, pero finalmente degrada el conjunto de cifrado con ServerHello.

Actualización de IoT Hub a la compatibilidad con TLS 1.2

Una vez creada una instancia de IoT Hub, la minTlsVersion propiedad se puede actualizar mediante Azure Portal, la CLI o los SDK. Si necesita actualizar para exigir que IoT Hub use TLS 1.2 y conjuntos de cifrado seguro (solo se permiten en regiones seleccionadas) o para establecer la compatibilidad con TLS 1.2 (compatible con todas las regiones), puede hacerlo siguiendo estos pasos.

Para actualizar IoT Hub para admitir TLS 1.2 o aplicar conjuntos de cifrado seguros en Azure Portal:

  1. Vaya a la instancia de IoT Hub existente en Azure Portal.

  2. En la pestaña Información general del menú izquierdo, haga clic en el vínculo Versión mínima de TLS de la sección Essentials.

    Captura de pantalla que muestra cómo elegir la versión mínima de compatibilidad con TLS.

  3. En la ventana Versión mínima de TLS, seleccione 1.2 para asegurarse de que solo los dispositivos compatibles con TLS 1.2 o superior puedan conectarse.

  4. Haga clic en Update (Actualizar).

    Captura de pantalla que muestra cómo activar la compatibilidad con TLS 1.2.

Nota:

Puede actualizar IoT Hub a TLS 1.2 en todas las regiones públicas. Sin embargo, si actualiza una instancia de IoT Hub en una de las regiones seleccionadas (Este de EE. UU., Centro-sur de EE. UU., Oeste de EE. UU. 2, US Gov Arizona y US Gov Virginia), aplicará conjuntos de cifrado más sólidos.

Aplicación de IoT Hub para usar TLS 1.2 y conjuntos de cifrado seguros

Para asegurarse de que los dispositivos IoT son TLS 1.2 y conjuntos de cifrado seguros cumplimiento, puede aplicar el cumplimiento mediante la característica de cumplimiento de TLS mínima en Azure IoT Hub.

Actualmente, esta característica solo está disponible en las siguientes regiones y durante la creación de IoT Hub (otras regiones de Azure serán compatibles en 2025):

  • Este de EE. UU.
  • Centro-sur de EE. UU.
  • Oeste de EE. UU. 2
  • US Gov: Arizona
  • US Gov Virginia (la compatibilidad con TLS 1.0/1.1 no está disponible en esta región: la aplicación TLS 1.2 debe estar habilitada o se producirá un error en la creación de un centro de IoT)

Para habilitar TLS 1.2 y la aplicación de conjuntos de cifrado seguros en Azure Portal:

  1. A partir del Asistente para creación de IoT Hub en Azure Portal

  2. Elija una Región de entre la lista anterior.

  3. En Administración -> Avanzado -> Seguridad de capa de transporte (TLS) -> Versión de TLS mínima, seleccione 1.2. Esta configuración solo aparece para los centros de IoT creados en la región admitida.

    Recorte de pantalla que muestra cómo activar la aplicación de TLS 1.2 durante la creación de IoT Hub.

  4. Seleccione Crear

  5. Conecte sus dispositivos IoT a IoT Hub

Para usar una plantilla de ARM para la creación, aprovisione una nueva instancia de IoT Hub en cualquiera de las regiones admitidas y establezca la propiedad minTlsVersion en 1.2 en la especificación de recursos:

{
    "$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
            }
        }
    ]
}

El recurso de IoT Hub creado con esta configuración rechaza los clientes de servicios y dispositivos que intenten conectarse mediante las versiones 1.0 y 1.1 de TLS. Del mismo modo, se rechaza el protocolo de enlace TLS si el mensaje ClientHello no incluye ninguno de los cifrados recomendados.

Nota:

Tras las conmutaciones por error, la propiedad minTlsVersion de IoT Hub sigue siendo efectiva en la región emparejada geográfica después de la conmutación por error.

Comprobación de las versiones de TLS para dispositivos de IoT Hub

Azure IoT Hub puede proporcionar registros de diagnóstico para varias categorías que se pueden analizar mediante registros de Azure Monitor. En el registro de conexiones, puede encontrar la versión de TLS para los dispositivos de IoT Hub.

Para ver estos registros, siga estos pasos:

  1. En Azure Portal, vaya hasta su instancia de IoT Hub.
  2. En el menú de recursos de Supervisión, seleccione Configuración de diagnóstico. Asegúrese de que la configuración de diagnóstico tenga la marca de verificación "Conexiones".
  3. En el menú de recursos de Supervisión, seleccione Registros.
  4. Escriba la siguiente consulta:
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. Un ejemplo de los resultados de la consulta tiene el siguiente aspecto: Diagrama que muestra la consulta de la versión TLS del dispositivo.
  2. Nota: La consulta de versión de TLS no está disponible para los dispositivos que usan conexiones HTTPS.

Configuración de TLS para SDK y IoT Edge

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

Lenguaje Versiones compatibles con TLS 1.2 Documentación
C Etiqueta 2019-12-11 o más reciente Vínculo
Pitón 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
Node.js. Versión 1.12.2 o más reciente Vínculo

Los dispositivos de IoT Edge se pueden configurar para que usen TLS 1.2 al comunicarse con IoT Hub. Para más información sobre cómo hacerlo, vea la página de documentación de IoT Edge.

Certificado TLS de criptografía de curva elíptica (ECC)

Aunque ofrece una seguridad similar a los certificados RSA, la validación de certificados ECC (con conjuntos de cifrado solo mediante ECC) usa hasta un 40 % menos de proceso, memoria y ancho de banda. Estos ahorros son importantes para los dispositivos IoT debido a sus perfiles y memoria más pequeños, así como para admitir casos de uso en entornos con un ancho de banda de red limitado.

Para utilizar el certificado de servidor ECC de IoT Hub:

  1. Asegúrese de que todos los dispositivos confían en las siguientes CA raíz:
    • DigiCert Global G2
    • Microsoft RSA 2017
  2. Configure el cliente para incluir solo conjuntos de cifrado ECDSA y excluir cualquier RSA. Estos son los conjuntos de cifrado admitidos para el certificado 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. Conecte el cliente al centro de IoT.

Negociación de la longitud máxima de fragmento TLS

IoT Hub también admite la negociación de longitud de fragmento máxima de TLS, que a veces se conoce como negociación de tamaño del marco de TLS. Esta característica está en versión preliminar pública.

Use esta característica para especificar la longitud máxima del fragmento de texto sin formato en un valor menor que el predeterminado de 2^14 bytes. Una vez realizada la negociación, IoT Hub y el cliente inician la fragmentación de los mensajes para asegurarse de que todos los fragmentos son menores que la longitud negociada. Este comportamiento es útil para los dispositivos que tienen restricciones de proceso o memoria. Para más información, vea la especificación de la extensión TLS oficial.

Todavía no está disponible la compatibilidad del SDK oficial con esta característica en versión preliminar pública. Inicio

  1. Cree un centro de IoT Hub.
  2. Al usar OpenSSL, llame a SSL_CTX_set_tlsext_max_fragment_length para especificar el tamaño del fragmento.
  3. Conecte el cliente a IoT Hub.

Asignación de certificados

No se recomienda la asignación de certificados y el filtrado de los certificados de servidor TLS y los certificados intermedios asociados a los puntos de conexión de IoT Hub, ya que Microsoft suele cambiar estos certificados con poca o ninguna antelación. Si es necesario, asigne solo los certificados raíz como se describe en esta entrada de blog de Azure IoT.

Pasos siguientes