View a markdown version of this page

Protocolos de comunicación de dispositivos - AWS IoT Core

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Protocolos de comunicación de dispositivos

AWS IoT Core admite dispositivos y clientes que utilizan los protocolos MQTT y MQTT over WebSocket Secure (WSS) para publicar mensajes y suscribirse a ellos, dispositivos y clientes que utilizan el protocolo HTTPS para publicar mensajes y la API de mensajería directa para enviar mensajes a clientes conectados específicos. Todos los protocolos son compatibles con IPv4 e IPv6. En esta sección se describen las diferentes opciones de conexión para dispositivos y clientes.

Versiones del protocolo TLS

AWS IoT Core utiliza la versión 1.2 de TLS y la versión 1.3 de TLS para cifrar todas las comunicaciones. Puede configurar versiones adicionales de la política de TLS para su punto de conexión mediante el establecimiento de los ajustes de TLS en las configuraciones de dominio. Al conectar los dispositivos a AWS IoT Core, los clientes pueden enviar la extensión de indicación de nombre de servidor (SNI), que es necesaria para características como el registro de varias cuentas, los puntos de conexión configurables, los dominios personalizados y los puntos de conexión de VPC. Para obtener más información, consulte Seguridad de transporte en AWS IoT.

Los AWS IoT SDK de dispositivo admiten MQTT y MQTT a través de WSS y cumplen los requisitos de seguridad de las conexiones de los clientes. Recomendamos utilizar los AWS IoT SDK de dispositivo para conectar los clientes a AWS IoT.

Protocolos, asignaciones de puertos y autenticación

La forma en que un dispositivo o cliente se conecta al agente de mensajes se puede configurar con un tipo de autenticación. De forma predeterminada o cuando no se envía ninguna extensión SNI, el método de autenticación se basa en el protocolo de aplicación, el puerto y la extensión TLS de negociación del protocolo de capa de aplicación (ALPN) que utilizan los dispositivos. En la siguiente tabla se muestra la autenticación esperada en función del puerto y la ALPN.

Protocolos, autenticación y asignaciones de puertos
Protocolo Operaciones admitidas Autenticación Puerto Nombre del protocolo ALPN

MQTT ha terminado WebSocket

Publicar, suscribirse Signature Version 4 443

N/A

Se acabó MQTT WebSocket

Publicar, suscribirse Autenticación personalizada 443

N/A

MQTT

Publicar, suscribirse

X.509 certificado de cliente

443

x-amzn-mqtt-ca

MQTT Publicar, suscribirse X.509 certificado de cliente 8883 N/A

MQTT

Publicar, suscribirse

Autenticación personalizada

443

mqtt

HTTPS

Solo publicar

Signature Version 4

443

N/A

HTTPS

Solo publicar

X.509 certificado de cliente

443

x-amzn-http-ca

HTTPS Solo publicar X.509 certificado de cliente 8443 N/A
HTTPS Solo publicar Autenticación personalizada 443 N/A
Negociación de protocolo de capa de aplicación (ALPN)

Cuando se utilizan las configuraciones de punto final predeterminadas, los clientes que se conectan al puerto 443 con la autenticación mediante certificado de X.509 cliente deben implementar la extensión TLS de negociación del protocolo de capa de aplicación (ALPN) y utilizar el nombre del protocolo ALPN que aparece en el ALPN ProtocolNameList enviado por el cliente como parte del mensaje. ClientHello

En el puerto 443, el IoT:Data-ATSpunto final admite el protocolo ALPN x-amzn-http-ca HTTP, pero el punto final no lo hace. IoT:Jobs

En el puerto 8443 HTTPS y el puerto 443 MQTT con ALPN x-amzn-mqtt-ca, no se puede utilizar la autenticación personalizada.

Los clientes se conectan a los puntos finales de sus dispositivos. Cuenta de AWS Consulte AWS IoT datos del dispositivo y puntos finales de servicio para obtener información sobre cómo encontrar los puntos de conexión de los dispositivos de su cuenta.

nota

AWS Los SDK no requieren la URL completa. Solo requieren el nombre de host del punto final, como en el pubsub.pyejemplo de AWS IoT Device SDK for Python on GitHub. Pasar la URL completa como se indica en la siguiente tabla puede generar un error (como un nombre de host no válido).

Conectándose a AWS IoT Core

Protocolo

Punto de enlace o URL

MQTT

iot-endpoint

MQTT a través de WSS

wss://iot-endpoint/mqtt

HTTPS

https://iot-endpoint/topics

Elección de un protocolo de aplicación para la comunicación entre dispositivos

Para la mayoría de las comunicaciones de los dispositivos de IoT a través de los puntos finales del dispositivo, querrá utilizar los protocolos Secure MQTT o MQTT over WebSocket Secure (WSS); sin embargo, los puntos finales del dispositivo también admiten HTTPS.

En la siguiente tabla se compara cómo se AWS IoT Core utilizan los dos protocolos de alto nivel (MQTT y HTTPS) para la comunicación entre dispositivos.

AWS IoT protocolos de dispositivo (MQTT y HTTPS) uno al lado del otro

Característica

MQTT

HTTPS

Publish/Subscribe soporte

Publicar y suscribirse

Solo publicar

Soporte para SDK

AWS Los SDK de dispositivos son compatibles con los protocolos MQTT y WSS

No compatible con el SDK, pero es posible usar métodos de lenguajes específicos para realizar solicitudes HTTPS

Soporte para calidad del servicio

Niveles 0 y 1 de calidad del servicio de MQTT

Se admite la calidad del servicio al pasar un parámetro de cadena de consulta ?qos=qos donde el valor puede ser 0 o 1. Puede agregar esta cadena de consulta para publicar un mensaje con el valor de calidad del servicio que desee.
¿Se pueden perder los mensajes recibidos mientras el dispositivo estaba sin conexión? No

Soporte de campo de clientId

No

Detección de desconexión de dispositivos

No

Comunicaciones seguras

Sí Consulte Protocolos, asignaciones de puertos y autenticación

Sí Consulte Protocolos, asignaciones de puertos y autenticación

Definiciones de temas

Definido por la aplicación

Definido por la aplicación

Formato de datos de mensajes

Definido por la aplicación

Definido por la aplicación

Sobrecarga de protocolo Más baja Más alta
Consumo eléctrico Más bajo Más alto

Elección de un tipo de autenticación para la comunicación entre dispositivos

Puede configurar el tipo de autenticación para su punto de conexión de IoT mediante puntos de conexión configurables. Como alternativa, utilice la configuración predeterminada y determine cómo se autentican sus dispositivos con una combinación de protocolo de aplicación, puerto y extensión TLS de ALPN. El tipo de autenticación que elijas determina cómo se autenticarán tus dispositivos cuando se conecten a ellos. AWS IoT Core Hay cinco tipos de autenticación:

X.509 certificado

Autentica los dispositivos mediante certificados de X.509 cliente, lo que AWS IoT Core valida la autenticación del dispositivo. Este tipo de autenticación es compatible con los protocolos Secure MQTT (MQTT a través de TLS) y HTTPS.

X.509 certificado con autorizador personalizado

Autentique los dispositivos mediante certificados de X.509 cliente y realice acciones de autenticación adicionales mediante un autorizador personalizado, que recibirá la información del certificado del X.509 cliente. Este tipo de autenticación es compatible con los protocolos Secure MQTT (MQTT a través de TLS) y HTTPS. Este tipo de autenticación solo es posible mediante puntos de conexión configurables con X.509 autenticación personalizada. No hay ninguna opción ALPN.

AWS Firma, versión 4 (SigV4)

Autentique los dispositivos mediante Cognito o su servicio de backend, que admiten la federación social y empresarial. Este tipo de autenticación funciona con los protocolos MQTT over WebSocket Secure (WSS) y HTTPS.

Autorizador personalizado

Autentique los dispositivos configurando una función de Lambda para procesar la información de autenticación personalizada enviada a AWS IoT Core. Este tipo de autenticación funciona con los protocolos MQTT seguro (MQTT sobre TLS), HTTPS y MQTT sobre WebSocket seguro (WSS).

Predeterminado

Autentique los dispositivos en función de la extensión de negociación del protocolo de capa de and/or aplicación (ALPN) de puertos que utilizan los dispositivos. No se admiten algunas opciones de autenticación adicionales. Para obtener más información, consulte Protocolos, asignaciones de puertos y autenticación.

La siguiente tabla muestra todas las combinaciones compatibles de tipos de autenticación y protocolos de aplicación.

Combinaciones compatibles de tipos de autenticación y protocolos de aplicación
Tipo de autenticación Secure MQTT (MQTT a través de TLS) MQTT over WebSocket Secure (WSS) HTTPS Predeterminado
X.509 certificado
X.509 certificado con autorizador personalizado
AWS Firma versión 4 (SigV4)
Autorizador personalizado
Predeterminado

Límites de duración de la conexión

No se garantiza que las conexiones HTTPS duren más del tiempo necesario para recibir las solicitudes y responder.

La duración de la conexión MQTT depende de la característica de autenticación que utilice. La siguiente tabla muestra la duración máxima de la conexión en condiciones ideales para cada característica.

Duración de la conexión MQTT por característica de autenticación

Característica

Duración máxima*

X.509 certificado de cliente

De 1 a 2 semanas

Autenticación personalizada

De 1 a 2 semanas

Signature Version 4

Hasta 24 horas

* No garantizado

Con X.509 los certificados y la autenticación personalizada, la duración de la conexión no tiene un límite estricto, pero puede ser tan breve como unos minutos. Las interrupciones en la conexión pueden producirse por diversos motivos. A continuación, se presentan algunos de los casos más comunes.

  • Wi-Fi interrupciones de disponibilidad

  • Interrupciones de conexión del proveedor de servicios de Internet (ISP)

  • Parches de servicio

  • Implementaciones de servicios

  • Escalado automático de servicios

  • Host de servicio no disponible

  • Problemas y actualizaciones del equilibrador de carga

  • Client-side errores

Los dispositivos deben implementar estrategias para detectar las desconexiones y volver a conectarse. Para obtener información sobre los eventos de desconexión y saber cómo gestionarlos, consulteConnect/Disconnect eventos en Eventos del ciclo de vida.