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 Secure () MQTT y MQTT over WebSocket Secure (WSS) para publicar mensajes y suscribirse a ellos, y dispositivos y clientes que utilizan el HTTPS protocolo para publicar mensajes. Todos los protocolos admiten IPv4 yIPv6. En esta sección se describen las diferentes opciones de conexión para dispositivos y clientes.

TLSversiones del protocolo

AWS IoT Core utiliza TLSla versión 1.2 y TLSla versión 1.3 para cifrar todas las comunicaciones. Puede configurar versiones de TLS políticas adicionales para su terminal configurando los TLS ajustes en las configuraciones de dominio. Al conectar los dispositivos a AWS IoT Core, los clientes pueden enviar la extensión Server Name Indication (SNI), que es necesaria para funciones como el registro de varias cuentas, los puntos de enlace configurables, los dominios personalizados y VPC los puntos de enlace. Para obtener más información, consulte Seguridad de transporte en AWS IoT.

El AWS IoT Dispositivo SDKs soporte MQTT y, además, respaldan MQTT los WSS requisitos de seguridad de las conexiones de los clientes. Recomendamos utilizar los AWS IoT Dispositivo SDKs 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 mediante un tipo de autenticación. De forma predeterminada, o cuando no se envía ninguna SNI extensión, el método de autenticación se basa en el protocolo de aplicación, el puerto y la TLS extensión del protocolo de negociación 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, el puerto yALPN.

Protocolos, autenticación y asignaciones de puertos
Protocolo Operaciones admitidas Autenticación Puerto ALPNnombre de protocolo

MQTTsobre WebSocket

Publicar, suscribirse Signature Version 4 443

N/A

MQTTacabado WebSocket

Publicar, suscribirse Autenticación personalizada 443

N/A

MQTT

Publicar, suscribirse

Certificado de cliente X.509

443

x-amzn-mqtt-ca

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

MQTT

Publicar, suscribirse

Autenticación personalizada

443

mqtt

HTTPS

Solo publicar

Signature Version 4

443

N/A

HTTPS

Solo publicar

Certificado de cliente X.509

443

x-amzn-http-ca

HTTPS Solo publicar Certificado de cliente X.509 8443 N/A
HTTPS Solo publicar Autenticación personalizada 443 N/A
Negociación del 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 una autenticación con certificado de cliente X.509 deben implementar la TLS extensión Application Layer Protocol Negotiation (ALPN) y utilizar el nombre de ALPN protocolo que aparece en el ClientHello mensaje ALPN ProtocolNameList enviado por el cliente.

En el puerto 443, el punto final IoT:Data- es compatible ALPN x-amzn-http-caHTTP, pero el ATS punto final IoT:Jobs no.

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

Los clientes se conectan a los puntos finales Cuenta de AWS de sus dispositivos. 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 SDKsno requieren la totalidadURL. Solo requieren el nombre de host del punto final, como en el pubsub.pyejemplo de AWS IoT Device SDK for Python on GitHub. Pasar el nombre completo URL tal y como se indica en la siguiente tabla puede generar un error, por ejemplo, que el nombre de host no sea válido.

Conectándose a AWS IoT Core

Protocolo

Punto final o URL

MQTT

iot-endpoint

MQTTmás WSS

wss://iot-endpoint/mqtt

HTTPS

https://iot-endpoint/topics

Elegir un protocolo de aplicación para la comunicación de su dispositivo

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 son compatibles. HTTPS

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

AWS IoT protocolos del dispositivo (MQTTyHTTPS) side-by-side

Característica

MQTT

HTTPS

Soporte para publicación/suscripción

Publicar y suscribirse

Solo publicar

SDKsoporte

AWS SDKsSoporte MQTT y WSS protocolos de dispositivos

No hay SDK soporte, pero puedes usar métodos específicos del idioma para realizar solicitudes HTTPS

Soporte para calidad del servicio

MQTTNiveles de QoS 0 y 1

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

Elegir un tipo de autenticación para la comunicación de su dispositivo

Puede configurar el tipo de autenticación para su terminal 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 ALPN TLS extensión. El tipo de autenticación que elijas determina cómo se autenticarán tus dispositivos cuando se conecten o se conecten a. AWS IoT Core Hay cinco tipos de autenticación:

certificado X.509

Autentique los dispositivos mediante certificados de cliente X.509, que AWS IoT Core validan la autenticación del dispositivo. Este tipo de autenticación funciona con protocolos Secure MQTT (MQTToverTLS) y. HTTPS

Certificado X.509 con autorizador personalizado

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

AWS Firma, versión 4 (SigV4)

Autentique los dispositivos mediante Cognito o su servicio de back-end, respaldando la federación social y empresarial. Este tipo de autenticación funciona con MQTT más de WebSocket Secure (WSS) y protocolos. HTTPS

Autorizador personalizado

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

Predeterminado

Autentique los dispositivos en función de la extensión de negociación (ALPN) del protocolo de capa de aplicación o puerto 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 Seguro MQTT (MQTTmásTLS) MQTTsobre WebSocket Secure (WSS) HTTPS Predeterminado
certificado X.509
Certificado X.509 con autorizador personalizado
AWS Firma versión 4 (SigV4)
Autorizador personalizado
Predeterminado

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

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

MQTTla duración de la conexión depende de la función 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.

MQTTduración de la conexión por función de autenticación

Característica

Duración máxima*

Certificado de cliente X.509

De 1 a 2 semanas

Autenticación personalizada

De 1 a 2 semanas

Signature Version 4

Hasta 24 horas

* No garantizado

Con los certificados X.509 y la autenticación personalizada, la duración de la conexión no tiene un límite estricto, pero puede durar incluso solo 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.

  • Interrupciones en la disponibilidad de la conexión wifi

  • 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

  • Errores del cliente

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, consulteEventos de conexión/desconexión en Eventos del ciclo de vida.